Ответ 1
Это действительно просто стиль кодирования. Компилятор генерирует то же самое для обоих вариантов.
См. также здесь, на вопрос о производительности:
Возможный дубликат:
ReSharper и var
После того, как я установил ReSharper, он требует (по предупреждению), что я использую var, когда это возможно, например
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
ReSharper хочет превратить его в
var ue = (UnhandledExceptionEventArgs) t;
Мне нравится первая версия лучше, есть ли какая-то причина предпочесть var? лучшая производительность? что-нибудь? или это просто стиль кода?
Это действительно просто стиль кодирования. Компилятор генерирует то же самое для обоих вариантов.
См. также здесь, на вопрос о производительности:
Когда вы говорите "предупреждениями", что именно вы имеете в виду? Обычно я видел, как он подсказывал, что вы можете использовать var, но ничего такого жесткого, как предупреждение.
Там нет разницы в производительности с var - код скомпилирован в тот же IL. Потенциальная выгода заключается в удобочитаемости - если вы уже сделали тип кристалла переменной прозрачным для RHS назначения (например, посредством вызова броска или конструктора), где преимущество также иметь его на LHS? Это личное предпочтение.
Если вы не хотите, чтобы R # предлагал использовать var, просто измените параметры. Одна вещь о ReSharper: она очень настраивается:)
В этом случае это просто стиль кодирования.
Использование var
необходимо только при работе с анонимными типами.
В других ситуациях это вопрос вкуса.
Как говорили другие, нет разницы в скомпилированном коде (IL), когда вы используете одно из следующих:
var x1 = new object();
object x2 = new object;
Я предполагаю, что Resharper предупреждает вас, потому что, по моему мнению, легче прочитать первый пример, чем второй. Кроме того, что нужно повторять имя типа дважды?
Рассмотрим следующее, и вы получите то, что я имею в виду:
KeyValuePair<string, KeyValuePair<string, int>> y1 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));
Легче это прочитать:
var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));