В C # я рекомендую использовать универсальное ключевое слово var для каждого объявления переменной? Если да, нужно ли упоминать эти специальные символы для литеральных значений в объявлении переменной, такие как M для десятичного, в следующем выражении:
var myDecimal = 14.5M;
Если это имеет значение, я пытаюсь заняться веб-разработкой на C #.
c#
variables
data-types
wassimans
источник
источник
auto
.Ответы:
Было много споров по поводу использования var. Мои общие правила следующие.
По сути, цель состоит в том, чтобы облегчить чтение кода. Если вы чувствуете, что var достаточно, потому что присваивание очевидно, используйте var. Используйте полное имя типа в качестве подсказки для читателя, когда вы чувствуете, что это необходимо.
источник
foreach
выражениях, где меня интересует только перечисление коллекции, но не обязательно тип каждого элемента.Когда использовать
var
это программирование "священная война". Существует только одно место, где это требуется: когда результат операции создает анонимный тип, такой как:В любом другом месте это необязательно и действительно соответствует вашему стандарту кодирования, использовать его или нет в других ситуациях.
И да, вам понадобятся специальные символы для литералов, чтобы компилятор знал, что это справа. В вашем примере, без
M
, по умолчаниюdouble
вместоdecimal
.источник
Из MSDN :
Я действительно, действительно не люблю неявную типизацию. На первый взгляд, это делает код более читабельным, но может привести к множеству проблем в будущем. Если dev изменяет инициализатор переменной, скажем, из
в
или
Тип изменится, что приведет к большому количеству ошибок компиляции или, если он находится в веб-представлении, и вы не используете шаг после сборки для предварительной компиляции своих представлений, к целому множеству ошибок времени выполнения, которые не будут обнаружены без эффективного тестирование перед развертыванием.
Неявная типизация также не работает везде (из той же ссылки MSDN)
Поддержание согласованности вашего кода (в данном случае везде используется явная типизация) - очень и очень хорошая вещь. По моему мнению,
var
это ленивый и не дает никакой реальной выгоды, и вводит еще одну потенциальную точку отказа в уже сложном процессе.Обновление 2017
Я полностью передумал. Работая в C #, я использую
var
большую часть времени (исключая такие вещи, как переменные типа интерфейса и тому подобное). Он сохраняет код, который улучшает читабельность. Тем не менее, обратите внимание на то, что на самом деле разрешенный тип.источник
this.
везде или говоритьSystem.Blah.SomeType
вместо «а»using
, что я все еще нахожу невероятно раздражающим, более краткий код - по крайней мере для меня - обычно легче визуально анализировать. Есть еще много сценариев, где явная типизация является правильным выбором. Но в наши дни я не столько адвокат по языку, сколько кто-то просто пытаюсь получить чистый код за дверью.using namespace std;
в файлах .cpp. (Не заголовки, так как я бы предпочел избегатьСправочник C # показывает следующее, чтобы проиллюстрировать хорошее и плохое использование этой конструкции:
В следующем примере показаны два выражения запроса. В первом выражении использование var разрешено, но не обязательно, поскольку тип результата запроса может быть явно указан как IEnumerable. Однако во втором выражении должна использоваться переменная, потому что результатом является коллекция анонимных типов, а имя этого типа недоступно, кроме как для самого компилятора. Обратите внимание, что в Примере № 2 элемент переменной итерации foreach также должен быть неявно типизирован.
источник
Ключевое слово var только запрашивает, чтобы компилятор автоматически определял тип переменной типа var. Следовательно, если вы хотите сохранить переменную десятичного типа в переменной var, вам нужно использовать m. Аналогично, если вы храните строку, вам нужно заключить ее в кавычки.
источник
Для меня я не использую var для следующих случаев:
Fruit foo = new Apple();
. В этом случае я думаю, что var - это избегать, и лучше использовать родительский класс (здесь Fruit), позволяя лучше понять логику кода и ограничить возможные ошибки (С var, нет проверки на полиморфную концепцию!)В остальном, я думаю, это зависит от случая и от фона разработчика. Некоторые люди из мира PHP предпочитают не заботиться о типах переменных, а некоторые из мира Java просто подумают, что var - это ересь, и чем более многословно, тем лучше.
Вам придется составить собственное мнение :)
источник