2013-07-31 5 views
1

Может ли кто-нибудь кратко объяснить разницу между следующими двумя утверждениями, а также, когда следует использовать один над другим?Разница между типом Var и типом объекта в C#

К примеру, у меня есть класс Person и хочет создать экземпляр класса Person в другом классе

Person person = new Person(); 

var person = new Person(); 
+0

Они будут производить точно такой же код IL. –

+0

Связанные: http://stackoverflow.com/q/41479/464709 –

ответ

2

Оба скомпилированы в один и тот же код MSIL. Единственное различие - это удобство для вас при написании исходного кода - если вы решите позже изменить тип p, вам нужно только один раз заменить вызов Person на вызов конструктора, и вы можете оставить объявление переменной неизменным при использовании var.

Это говорит о том, что var сочетается с небольшим уменьшением удобочитаемости, так как вы не можете видеть тип p мгновенно уже в начале вашей линии. Поэтому ограничьте использование var случаями, когда это действительно экономит некоторую типизацию, например, для сложных вложенных генерических типов.

Обратите внимание, что, если вы не инициализировать переменную сразу (в том же заявлении, в котором переменная объявлена), вы не можете использовать var как компилятор не может определить тип переменной.

0

никакой разницы здесь. var переведено в Person во время компиляции. Обычно я использую var, чтобы сделать рефакторинг кода быстрее, я имею в виду, что если вы решите изменить тип p, вы можете просто сменить правую сторону и дать var.

1

Пожалуйста, ссылки this doc

Первое явное объявление в то время как второй неявно (компилятор будет определять объект). В противном случае они эквивалентны.

2

Там нет никакой разницы, это просто синтаксического:

... Для неявно напечатали локальные переменный сильно типизированный так же, как если бы вы объявили типу себя, но компилятор определяет тип ...

http://msdn.microsoft.com/library/bb383973.aspx

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