Являются ли неявно типизированные переменные способом продвижения вперед (C #)
-
19-09-2019 - |
Вопрос
Я использую StyleCop для Resharper в проекте, первоначально написанном для .net v2.Но с тех пор я обновил этот проект для платформы 3.5.
Stylecop рекомендует мне изменить основную часть моих явно типизированных переменных на неявно типизированные, например:
строка - var
пользовательский сильный тип - var
Является ли это способом продвижения вперед при работе с проектом .net 3.5.Кажется необычным объявлять все как var.
Не стесняйтесь обновлять заголовок вопроса, если моя терминология отсутствует...
Решение
Это не дженерики, это неявно типизированные переменные.На самом деле это в значительной степени вопрос вкуса.Есть места, где вы можете переусердствовать с использованием var
и есть места, где это совершенно очевидно необходимо (например, анонимные типы), так что просто найдите место посередине, которое соответствует вашим (и вашей команды) предпочтениям.
Другие советы
Обсуждалось во многих местах, и это зависит от вкуса.Сравните эти две строки кода:
StringBuilder stringBuilder = new StringBuilder();
var stringBuilder = new StringBuilder();
Что вы предпочитаете?
Взгляните на это
Неявно типизированные локальные переменные (Руководство по программированию на C #)
Неявно типизированной локальной переменной типизированы как если бы тип, но компилятор определяет тип.
Также взгляните на Использование ключевого слова var в C#
Я считаю, что это скорее предложение, и его следует рассмотреть, но не обязательно реализовать в полном объеме.
Хотя лично я считаю, что наилучшее использование var - это когда объявляющий / возвращающий тип очевиден, т.е:
var temp = "Test me now";
против
var temp = GetTestData();
Кроме того, мне действительно нравится иметь возможность объявлять универсальные типы с меньшим количеством кода:
var test = new Dictionary<string,string>();
против
Dictionary<string, string> test = new Dictionary<string,string>();
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);