Ответ 1
Что касается эффективности времени выполнения, это не имеет значения. Это действительно скомпилировано в точно такое же ИЛ. Эта переменная все еще будет статически типизирована, это просто, что тип выводится из выражения инициализации.
"Inferred" означает "разработанный из другой информации". Поэтому, если декларация:
string x = "hello";
переменная x
явно объявляется типом string
. Компилятор не должен ничего разбираться. Если вы используете var
:
var x = "hello";
тогда компилятор находит тип времени компиляции присваиваемого выражения и делает это типом переменной. x
по-прежнему известен как строковая переменная везде в коде.
Если разработчики, с которыми вы работаете, полагаете, что var
ведет себя динамически, я бы очень осторожно относился к другой информации, которую они вам рассказывают. Вы можете с осторожностью предложить, чтобы они узнали немного больше о том, как работают новые языковые функции, прежде чем судить их.
С точки зрения эффективности разработчиков, этот вопрос гораздо сложнее судить. Лично я использую var
совсем немного - особенно в тестах, но не везде.