Оба скомпилированы в один и тот же код MSIL. Единственное различие - это удобство для вас при написании исходного кода - если вы решите позже изменить тип p
, вам нужно только один раз заменить вызов Person
на вызов конструктора, и вы можете оставить объявление переменной неизменным при использовании var
.
Это говорит о том, что var
сочетается с небольшим уменьшением удобочитаемости, так как вы не можете видеть тип p
мгновенно уже в начале вашей линии. Поэтому ограничьте использование var
случаями, когда это действительно экономит некоторую типизацию, например, для сложных вложенных генерических типов.
Обратите внимание, что, если вы не инициализировать переменную сразу (в том же заявлении, в котором переменная объявлена), вы не можете использовать var
как компилятор не может определить тип переменной.
Они будут производить точно такой же код IL. –
Связанные: http://stackoverflow.com/q/41479/464709 –