我们终于在工作中的一些开发者站点上安装了VS2010,可以使用C# 4.0的功能。尽管我们大部分开发仍需针对.Net 3.5进行。
当我启动一个新项目并将目标设置为.Net 3.5时,它仍允许我使用C# 4.0,例如dynamic。因此,在针对.Net 3.5时,您可以使用C# 4.0的特性,并且这些特性是否能在没有.Net 4.0的环境下工作?
谢谢。
dynamic
代码如果针对.NET 3.5框架进行编译将无法通过。
更明确地说,编译器将允许您定义和分配一个dynamic
变量,例如:
dynamic x = 3;
那一行代码会被编译,因为在类型方面dynamic
只被编译为object
。但如果您尝试对该变量进行任何操作,例如:
Console.WriteLine(x);
如果那样做,编译器将不得不生成代码来发现/强制转换真实的类型,而它无法做到;你将收到以下编译错误:
- 预定义类型“Microsoft.CSharp.RuntimeBinder.Binder”未定义或未导入
- 一个或多个用于编译动态表达式所需的类型未找到。您是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?
C#4编译器依赖DLR,特别是Microsoft.CSharp程序集,来处理与dynamic
相关的所有内容。这些在.NET3.5中不可用。因此,答案是否定的,当针对Framework版本3.5时,无法使用dynamic
。