2015-12-30 2 views
2

Предположим, у вас есть этот код:Integer разница декларация сборки

static void Send(byte[] buffer, int offset, int count) 
{ 
    while (count > 0) 
    { 
     int size = sock.Send(buffer, offset, count); 

     if (size == 0) throw new EndOfStreamException(); 

     offset += size; 
     count -= size; 
    } 
} 

против

static void Send(byte[] buffer, int offset, int count) 
{ 
    int size; 

    while (count > 0) 
    { 
     size = sock.Send(buffer, offset, count); 

     if (size == 0) throw new EndOfStreamException(); 

     offset += size; 
     count -= size; 
    } 
} 

Мой учитель сказал мне, второй будет более эффективным, но это правда?

Я провел некоторое тестирование и сравнил код сборки, и он был равен.

Но будет ли это всегда так?

  • Что делать, если вместо примитивного типа вы использовали ссылочный тип? (при условии, что вы не выделяете)
  • Как использовать несколько переменных?
  • Будут ли различия между двумя возможностями?

Заранее благодарим за любые ответы, прошу прощения, если это было задано раньше, но я действительно не знал, как это назвать.

+6

Получить нового учителя – Amit

+0

Если вы протестировали, и вы нашли случаи равными, почему бы вам поверить, что говорит учитель? –

+0

Вы проверили, что оптимизация компилятора выключена, а затем снова включена? – Grantly

ответ

1

Зависит от оптимизации компилятора - но поскольку это тот же объем (функция) - реализация (как правило) будет одинаковой.

Пока вы не создаете экземпляр ничего нового в этой строке, это локальная переменная в области функций.

Смежные вопросы