Какова цель "var"?

Возможный дубликат:
В чем смысл ключевого слова var?

Я не спрашиваю, как это работает. Я не спрашиваю, влияет ли это на производительность. Я уже знаю эти ответы.

Я хочу знать, что вдохновило команду MS С# добавить ее на язык в первую очередь. Вы не добавляете легкомысленные вещи на язык. Должна была быть проблема, которую он решил. Какова была эта проблема?

Самый близкий пример, который я видел для "проблемы, которую он решает", - это использование анонимных типов, например:

var linqResult = from element in SomeCollection s
                 elect new { element.A, element.B } 

Ирония об этом использовании заключается в том, что руководства по стилям и правилам кодирования (например, предоставленные Microsoft) советуют кодеру избегать использования "var", когда результирующий тип не является очевидным. Другими словами, предполагаемая цель "var" противоречит стандартным стандартам кодирования.

Если бы я писал стандарты кодирования и пытался предотвратить чрезмерное использование "var", я бы несколько склонился сказать "использовать" var "только в ответ на анонимные типы". Но этот вопрос задает полный круг: что было / целью добавления "var" на язык?

Ответы

Ответ 1

Анонимные типы были большими, но также уменьшали повторение в методах:

Dictionary<MyCustomType, List<MyOtherCustomType>> dict = new Dictionary<MyCustomType, List<MyOtherCustomType>>();

Ответ 2

Точно! Анонимные типы. Как в мире вы могли бы ссылаться на созданный анонимный тип, если бы не было var и все еще имели intellisense вместе с ним?

Другими словами: когда не было var, в используемом нами смысле не было бы никаких анонимных типов с поддержкой времени компиляции. Было бы слишком много ошибок времени выполнения с анонимными типами.

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

Ответ 3

Насколько я знаю, ключевое слово var было сделано в значительной степени, чтобы упростить LINQ, позволяя использовать анонимные типы

Ответ 4

Из MSDN:

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