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);
…然后编译器必须生成代码来发现/强制实际类型,它不能做; 你会得到以下编译错误:
- 未定义或导入预定义类型“Microsoft.CSharp.RuntimeBinder.Binder”
- 无法找到编译动态表达式所需的一种或多种类型。 您是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?
C#4编译器依赖于DLR,特别是Microsoft.CSharp程序集,用于与dynamic
相关的所有内容。 这些在.NET 3.5中不可用。 所以答案是否定的,在针对Framework 3.5版时,您无法使用dynamic
。