我使用目标框架2.0在Visual Studio中创建了新项目。但即使我离开某处var
关键字,Visual Studio也能成功编译项目。这是正确的行为,因为var
是3.0功能吗?是否有任何设置可以阻止编译var
的代码?
答案 0 :(得分:14)
var
是 C# 3.0的一项功能,但它不需要任何框架功能。换句话说,在面向.NET 2.0的项目中使用它绝对没问题。许多其他功能也是如此 - 匿名类型,自动属性,lambda表达式等。
有关详细信息,请参阅我的versions article。 (我需要在某个时候为C#4更新它......)
如果希望限制自己使用C#2.0,则可以通过单击项目属性IIRC的“构建”选项卡中的“高级”来指定语言版本。 (这肯定在某个地方,但我宁愿喝一杯咖啡,而不是现在检查确切位置。)
答案 1 :(得分:3)
var
纯粹是编译时功能,编译程序集后,编译器会插入实际类型,并且您使用var
的事实已“丢失”
因此,一个针对框架2.0版本的项目仍然可以使用var
功能,因为它实际上不会以任何方式影响输出的程序集。
答案 2 :(得分:1)
只要您的项目始终使用Visual Studio 2008或更新版本进行编译,您就可以安全地使用C#3.0功能。 .NET 2.0目标仅限制您可以使用的库,而不是语言功能。
答案 3 :(得分:-1)
将var的全文替换为1var1并手动替换它们或使用3.0之前版本的编译器。