«вар» - это одна из тех вещей, которые люди либо любят, либо ненавидят (например, регионы). Хотя, в отличие от регионов, var абсолютно необходим при создании анонимных классов.
Для меня var имеет смысл, когда вы обновляете объект напрямую, например:
var dict = new Dictionary<string, string>();
Как говорится, вы можете легко сделать:
Dictionary<string, string> dict =
new и intellisense заменит вас здесь.
Если вы хотите работать только с определенным интерфейсом, вы не можете использовать var, если только метод, который вы вызываете, не возвращает интерфейс напрямую.
Resharper, кажется, на стороне использования «var» повсюду, что может подтолкнуть больше людей, чтобы сделать это таким образом. Но я согласен, что читать сложнее, если вы вызываете метод, и неясно, что возвращает имя.
Вар сам по себе не тормозит, но есть одна оговорка, о которой не многие думают. Если вы сделаете var result = SomeMethod();
, то код после этого ожидает некоторого результата назад, где вы будете вызывать различные методы или свойства или что-то еще. Если SomeMethod()
изменил свое определение на какой-то другой тип, но он все же выполнил контракт, которого ожидал другой код, вы просто создали действительно неприятную ошибку (если, конечно, нет модульных / интеграционных тестов).