В чем разница в этих способах присвоения переменной?

#c# #unity3d

#c# #unity3d

Вопрос:

В чем разница между созданием переменной специально для присвоения переменной и использованием ключевого слова new для ее создания в соответствии с присвоением значения? Я понимаю, что они оба дают одинаковый результат, я просто хотел бы знать, есть ли какие-либо различия в производительности и тому подобное.

Например:

 this.transform.position = new Vector3(mousePosInBlocks, this.gameObject.transform.position.y, this.transform.position.z);
  

против

 Vector3 temp = new Vector3(mousePosInBlocks, this.gameObject.transform.position.y, this.transform.position.z);
this.gameObject.transform.position = temp;
  

В этом примере кода используется система позиций Unity 5s с игровыми объектами..

Комментарии:

1. Можете ли вы сравнить скомпилированный код? Я бы ожидал, что они будут точно таким же кодом в режиме выпуска.

2. @Rup Я только что просмотрел скомпилированный код, и он выглядит так же, просто строки расположены в немного другом порядке. Спасибо!

3. @Rup Я немного новичок в StackOverflow, поэтому я не уверен, что это единственный способ, но если вы создадите короткий ответ, я пометлю его как правильный и проголосую за него. Спасибо за помощь!

4. Первый требует больше горизонтального пространства. Второй требует больше вертикального пространства.

5. В «вертикальном» примере вы можете отлаживать переменную temp немного проще, чем переходить к «горизонтальному» коду. YMMV.

Ответ №1:

Скомпилированный код был по существу таким же, что означает практически отсутствие различий. Спасибо @Rup за то, что указал мне на это.

Ответ №2:

Оба имеют одинаковый конечный результат, однако второй метод не нужен, поскольку новая переменная ‘temp’ создается и сохраняется в памяти. Для этого требуется немного памяти и небольшая вычислительная мощность.

Комментарии:

1. Спасибо за информацию!