Должен я *всегда* одобряю введенные локальные переменные implictly в C# 3.0?

Вы можете объявить массив символов несколькими способами:

char p[10];
char* p = (char*)malloc(10 * sizeof(char));

Прототипом функции, которая принимает массив по значению, является:

void foo(char* p); //cannot modify p

или reference:

void foo(char** p); //can modify p, derefernce by *p[0] = 'f';

или синтаксисом массива:

void foo(char p[]); //same as char*
27
задан user2771704 15 July 2014 в 12:54
поделиться

12 ответов

Это - конечно, вопрос стиля, но я соглашаюсь с, Смейте: C# 3.0 Неявные Описания типа: К var или не к var? . Я думаю с помощью var вместо явного типа, делает код менее читаемым. В следующем коде:

var result = GetUserID();

, Что такое результат? Интервал, строка, GUID? Да, это имеет значение, и не, мне не придется вырыть через код для знания. Это является особенно раздражающим в примерах кода.

Jeff записал сообщение на этом, говоря он одобряет var. Но что сумасшедший парень!

я вижу шаблон для stackoverflow успеха: вскопайте старые сообщения CodingHorror, и (Стиль опасности) формулируют их с точки зрения вопроса.

37
ответ дан Jon Schneider 28 November 2019 в 04:36
поделиться

Я использую его только, когда явно очевидно, каков var.

ясный мне:

XmlNodeList itemList = rssNode.SelectNodes("item");
var rssItems = new RssItem[itemList.Count];

не очищаются мне:

var itemList = rssNode.SelectNodes("item");
var rssItems = new RssItem[itemList.Count];
12
ответ дан sieben 28 November 2019 в 04:36
поделиться

Лучшая сводка ответа, который я видел к этому, комментарий Eric Lippert, в котором по существу говорится, что необходимо использовать конкретный тип, если важно, каков тип, но не к иначе. По существу введите информацию, должен быть зарезервирован для мест, где тип важен.

стандарт в моей компании должен использовать var везде, в который мы приехали после читающая различная рекомендация и затем проводящий некоторое время, испытав его, чтобы видеть, было ли отсутствие аннотируемой информации о типе справкой или помехой . Мы чувствовали, что это была справка.

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

лучший совет я могу дать Вам, должен попробовать его за себя и видеть что работы для Вас и Вашей команды.

9
ответ дан Greg Beech 28 November 2019 в 04:36
поделиться

@jongalloway - var не обязательно делает Ваш код более нечитабельным.

var myvariable = DateTime.Now
DateTime myvariable = DateTime.Now;

первое так же читаемо как второе, и требует меньшего количества работы

var myvariable = ResultFromMethod();

здесь, у Вас есть точка, var мог сделать код менее читаемым. Мне нравится var, потому что, если я изменяю десятичное число на двойное, я не должен идти, изменяют его в наборе мест (и не говорите, осуществляют рефакторинг, иногда я забываю, просто позволяю мне var!)

РЕДАКТИРОВАНИЕ: просто статья чтения, я соглашаюсь. lol.

4
ответ дан Darren Kopp 28 November 2019 в 04:36
поделиться

У меня есть чувство, что это будет одним из самых популярных вопросов, которые задают со временем на Переполнении стека. Это сводится к предпочтению. Независимо от того, что Вы думаете, более читаемо. Я предпочитаю var, когда тип определяется на правой стороне, потому что это более кратко. Когда я присваиваю переменную от вызова метода, я использую явное описание типа.

2
ответ дан John Sheehan 28 November 2019 в 04:36
поделиться

Было хорошее обсуждение этого Ужас Кодирования

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

2
ответ дан Ryan Sampson 28 November 2019 в 04:36
поделиться

Одно из преимуществ инструмента как ReSharper - то, что можно записать код однако, Вы любите и имеете его, переформатировали к чему-то более удобному в сопровождении впоследствии. У меня есть набор R#, чтобы всегда переформатировать таким образом, что фактический используемый тип видим, однако, при записи кода, я почти всегда ввожу 'var'.

инструменты Good позволяют Вам иметь лучший из обоих миров.

John.

1
ответ дан John Richardson 28 November 2019 в 04:36
поделиться

Это только имеет смысл, когда Вы не знаете тип заранее.

1
ответ дан user79829 28 November 2019 в 04:36
поделиться

"Лучший стиль" субъективен и варьируется в зависимости от контекста.

Иногда это - путь, легче использовать 'var' вместо того, чтобы вывести некоторое чрезвычайно долгое имя класса, или если Вы не уверены в типе возврата заданной функции. Я нахожу, что использую 'var' больше при слонянии без дела с Linq, или в для объявлений цикла.

Другие времена, с помощью полного имени класса более полезны, поскольку оно документирует код лучше, чем 'var'.

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

За Ваше здоровье!

0
ответ дан OJ. 28 November 2019 в 04:36
поделиться

Нет не всегда , но я шел бы до для высказывания большого количества времени. Описания типа не намного более полезны, чем венгерская запись когда-нибудь была. У Вас все еще есть та же проблема, которая типы подвержены изменениям и так, как осуществляющие рефакторинг инструменты полезны для этого, это не идеально по сравнению с не необходимостью измениться, где тип определяется кроме единственного места, которое следует, не Повторяют Себя принцип.

Любой однострочный оператор, где имя типа может быть определено и для переменной и для ее значения, должен определенно использовать var, особенно когда это - длинный Generic< OtherGeneric< T, U, V>, Dictionary< X, Y>>>

0
ответ дан Mark Cidade 28 November 2019 в 04:36
поделиться

Существует действительно хорошая статья MSDN об этой теме, это обрисовывает в общих чертах некоторые случаи, где Вы не можете использовать var:

следующие ограничения относятся к объявлениям переменной с неявно определенным типом:

  • var может только использоваться, когда локальная переменная объявляется и инициализируется в том же операторе; переменная не может быть инициализирована к пустому указателю, или группе метода или анонимной функции.
  • var не может использоваться на полях в объеме класса.
  • Переменные, объявленные при помощи var, не могут использоваться в выражении инициализации. Другими словами, это выражение законно: интервал i = (я = 20); но это выражение производит ошибку времени компиляции: var i = (я = 20);
  • Несколько переменных с неявно определенным типом не могут быть инициализированы в том же операторе.
  • , Если тип назвал var, находится в объеме, то ключевое слово var решит к тому имени типа и не будет рассматриваться как часть неявно введенного локального объявления переменных.

я рекомендовал бы проверить его для понимания полных последствий использования var в коде.

0
ответ дан lomaxx 28 November 2019 в 04:36
поделиться

я вижу шаблон для stackoverflow успеха: вскопайте старые сообщения CodingHorror, и (Стиль опасности) формулируют их с точки зрения вопроса.

я заявляю о своей невиновности! Но Вы правы, это, казалось, было относительно популярным небольшим вопросом.

0
ответ дан serg10 28 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: