Подтвердить что ты не робот

Использует ли ключевое слово var bad в С# 2.0?

Я прочитал статью о с использованием функций С# 3 в С# 2, где вы можете, например, ввести var x = 2;, и даже если проект является 2.0, компилятор Visual Studio 2008 подбирает его и генерирует тот же код, что и если бы вы набрали int x = 2.

Но я не получу, если вы не сделаете это в некоторых случаях? Я всегда думал, что ключевое слово var не дошло до С# 3. Если компилятор генерирует один и тот же код, и я могу набирать код С# 3 и код С# 2 точно так же, каково различие на самом деле, потому что CLI то же самое, правильно?

Цитата из ссылки выше

За кулисами компилятор генерирует обычный код .NET 2.0.

Есть ли разница между кодом .NET 2.0 и кодом .NET 3?

4b9b3361

Ответ 1

Я боюсь, что вы смешиваете версии С# и версии .NET.

Вы не можете использовать var в С# 2.0, компилятор будет считать, что это всего лишь идентификатор. Но вы можете использовать его в С# 3.0 с таргетингом на .NET 2.0, поскольку var - это только конструкция языка (С#), а не .NET-конструкция. Компилятор .NET переведет его в соответствующий тип в сгенерированном CIL, поэтому компилятор JIT никогда не увидит его, и вы будете полностью в порядке.

Поскольку компилятор VS2008 является компилятором С# 3.0, у вас не будет проблем с использованием var там, независимо от того, на какую именно версию вы планируете.

Ответ 2

var - это синтаксический сахар на языке С# 3, который использует VS2008. код все еще может быть скомпилирован как совместимый с .net 2.0. Единственная проблема, которую вы должны иметь, - это отредактировать эти файлы в VS2005.

Ответ 3

В отношении этого использования.

Это не плохо для исполнения, как уже упоминалось, это просто синтаксический сахар и заменяется во время компиляции.

При кодировании, я думаю, что это использование смешанное. Например:

Я думаю, это нормально. Легко видеть, что значение

var a = "test"; 

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

var b = SomeReallyLongNameSpace.SubNamespace.Namespace.Class.Enum.Value1; 

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

var c = GetString(); 

У вас нет идеи с первого взгляда, что возвращается, это не полезно и будет лучше определено, а не использовать ключевое слово var.

var d = GetSomething(); 

Ответ 4

о var: это чистый синтаксис сахара и трюк компилятора. введя var, вы просите компилятор угадать тип, основанный на правой части выражения. это можно легко сделать с помощью .net 2.0. Linq может не работать, потому что он использует сборки из .net 3.5

Ответ 5

var был введен для хранения экземпляров анонимных типов в С# 3.0.

В .net2.0 может быть компилятор VS2008 или С# должен заменять его фактическим типом, который является alraedy известным во время разработки, и если вы уже знали тип при кодировании, почему вы используете var!:)