C#4.0和.Net 3.5

因此,我们终于在一些开发人员工作站上安装了VS2010,并且可以使用C#4.0function。 虽然我们开发的大部分内容仍然需要暂时以.Net 3.5为目标。

当我开始一个新项目并将目标设置为.Net 3.5时,它仍然允许我使用C#4.0,如动态。 因此,您可以在针对.net 3.5时使用C#4.0function吗?这些function是否适用于.Net 4.0不可用的环境?

谢谢。

如果您的目标是.NET 3.5框架,则不会编译dynamic代码。

为了更清楚,编译器将允许您定义分配 dynamic变量,例如:

 dynamic x = 3; 

这一行代码将被编译,因为就类型而言, dynamic只是编译为object 。 但是,如果您尝试对该变量执行任何操作,例如:

 Console.WriteLine(x); 

…然后编译器必须生成代码来发现/强制实际类型,它不能做; 你会得到以下编译错误:

  1. 未定义或导入预定义类型“Microsoft.CSharp.RuntimeBinder.Binder”
  2. 无法找到编译动态表达式所需的一种或多种类型。 您是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?

C#4编译器依赖于DLR,特别是Microsoft.CSharp程序集,用于与dynamic相关的所有内容。 这些在.NET 3.5中不可用。 所以答案是否定的,在针对Framework 3.5版时,您无法使用dynamic