Я прочитал статью об использовании 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 кода?
Боюсь, вы путаете версии C # и .NET.
Вы не можете использовать var
в C # 2.0, компилятор будет думать, что это просто идентификатор. Но вы можете использовать его в C # 3.0, ориентированном на .NET 2.0, поскольку var
- это просто конструкция языка (C #), а не конструкция .NET. Компилятор .NET преобразует его в соответствующий тип в сгенерированном CIL, поэтому JIT-компилятор никогда его не увидит, и все будет в порядке.
Поскольку компилятор VS2008 является компилятором C # 3.0, у вас не возникнет проблем с использованием там var
, независимо от целевой версии .NET.
Что касается его использования.
Это неплохо с точки зрения исполнения, как уже упоминалось, это просто синтаксический сахар и заменяется во время компиляции.
Я считаю, что кодирование смешанное. Например:
Думаю, это нормально. Легко увидеть, какое значение имеет значение
var a = "test";
Не совсем так, многим людям приходится прокручивать в среде IDE, чтобы действительно понять код, а это неприятно.
var b = SomeReallyLongNameSpace.SubNamespace.Namespace.Class.Enum.Value1;
Это нормально, вы знаете, каков результат, потому что это четко определенный метод.
var c = GetString();
Вы понятия не имеете с первого взгляда, что возвращается, это бесполезно, и его лучше определить, чем использовать ключевое слово var.
var d = GetSomething();
var - это синтаксический сахар на языке C # 3, который использует VS2008. код все еще может быть скомпилирован для совместимости с .net 2.0. Единственная проблема, которая у вас должна возникнуть, - это если вам нужно отредактировать эти файлы в VS2005.
о var: это чистый синтаксический сахар и трюк с компилятором. вводя var, вы просите компилятор угадать тип на основе правой части выражения. это можно легко сделать путем компиляции в .net 2.0. Linq может не работать, потому что он использует сборки из .net 3.5
var был введен для хранения экземпляров анонимных типов в C # 3.0.
В .net2.0 может быть компилятор VS2008 или C #, который должен заменить его фактическим типом, который уже известен во время разработки, и если вы уже знали этот тип во время кодирования, зачем вам использовать var! :)