Неявно типизированные переменные - путь вперед (C #)

Я использую StyleCop для Resharper в проекте, изначально написанном для .net v2. Но с тех пор я обновил этот проект до версии 3.5.

Stylecop рекомендует изменить большую часть явно типизированных переменных на неявно типизированные, например:

строка - var

специальный строгий тип - var

Это путь вперед при работе с проектом .net 3.5. Кажется необычным объявлять все как var.

Не стесняйтесь обновлять заголовок вопроса, если моя терминология отсутствует ...


person JL.    schedule 11.12.2009    source источник
comment
Связанные / Dupe: stackoverflow.com/questions/17032/   -  person Joey    schedule 11.12.2009
comment
Это не дженерики. Это неявно типизированные локальные переменные. Дженерики имеют форму SomeClass ‹T› или SomeMethod ‹T› ()   -  person Jarrett Meyer    schedule 11.12.2009


Ответы (5)


Это не общие, это неявно типизированные переменные. Это действительно во многом дело вкуса. Есть места, где можно перестараться с var, и есть места, где это явно необходимо (подумайте об анонимных типах), поэтому просто найдите место посередине, которое соответствует вашим (и вашей команде) предпочтениям.

person jason    schedule 11.12.2009

Обсуждался во многих местах, и это по вкусу. Сравните эти две строки кода:

StringBuilder stringBuilder = new StringBuilder();
var stringBuilder = new StringBuilder();

Какой ты предпочитаешь?

person David M    schedule 11.12.2009
comment
Это очевидно, но когда дело касается var foo = 0m;, я был бы более осторожен. - person Joey; 11.12.2009
comment
Правильный. И такие инструменты, как ReSharper, не будут предлагать var для такого объявления. - person David M; 11.12.2009
comment
Зачем вам быть осторожнее с var foo = 0m;? Неужто это недвусмысленно объявляет decimal переменную? - person andrewf; 06.03.2017

Посмотри на это

var (справочник по C #) и

неявно типизированные локальные переменные (Руководство по программированию на C #)

Неявно типизированная локальная переменная строго типизирована, как если бы вы сами объявили тип, но компилятор определяет тип.

Также ознакомьтесь с Использование ключевого слова var в C #

и Дебаты по C #: когда следует использовать var?

person Adriaan Stander    schedule 11.12.2009

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

Хотя лично я считаю, что лучше всего использовать var, когда тип объявления / возврата очевиден, то есть:

var temp = "Test me now";

против

var temp = GetTestData();

Также мне очень нравится возможность объявлять общие типы с меньшим количеством кода:

    var test = new Dictionary<string,string>();

против

    Dictionary<string, string> test = new Dictionary<string,string>();
person Pat    schedule 11.12.2009

var очень важен при использовании, например, анонимные типы ...

var cees = from c in Customers select new { c.Name, c.Birthdate };

Resharper предложит поменять все на var. Для очевидных определений вроде

var c = new Customer();

Я люблю его использовать. для некоторого вызова API я могу явно записать тип:

Customer c = repository.Get(1);
person flq    schedule 11.12.2009