Действительно ли использование является var ключевого слова плохо в C# 2.0?

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

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

Кавычка из ссылки выше

Негласно, компилятор генерируют регулярную.NET 2,0 кода.

Есть ли какое-либо различие между.NET 2,0 кода и.NET 3 кода?

12
задан Patrick 29 April 2010 в 10:15
поделиться

5 ответов

Боюсь, вы путаете версии C # и .NET.

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

Поскольку компилятор VS2008 является компилятором C # 3.0, у вас не возникнет проблем с использованием там var , независимо от целевой версии .NET.

25
ответ дан 2 December 2019 в 04:16
поделиться

Что касается его использования.

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

Я считаю, что кодирование смешанное. Например:

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

var a = "test"; 

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

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

Это нормально, вы знаете, каков результат, потому что это четко определенный метод.

var c = GetString(); 

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

var d = GetSomething(); 
4
ответ дан 2 December 2019 в 04:16
поделиться

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

7
ответ дан 2 December 2019 в 04:16
поделиться

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

1
ответ дан 2 December 2019 в 04:16
поделиться

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

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

-2
ответ дан 2 December 2019 в 04:16
поделиться
Другие вопросы по тегам:

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