所以我们终于在一些开发者工作站上安装了VS2010并且可以使用C#4.0功能.虽然我们开发的大部分内容仍然必须暂时以.Net 3.5为目标.
当我启动一个新项目并将目标设置为.Net 3.5时,它仍然允许我使用C#4.0,如动态.因此,您可以在针对.net 3.5时使用C#4.0功能吗?这些功能是否可以在.Net 4.0不可用的环境中使用?
谢谢.
Aar*_*ght 44
dynamic 如果您的目标是.NET 3.5框架,代码将无法编译.
为了更清楚,编译器将允许您定义和分配一个dynamic变量,如:
dynamic x = 3;
Run Code Online (Sandbox Code Playgroud)
那一行代码将被编译,因为dynamic就编译object而言只是编译.但是,如果您尝试对该变量执行任何操作,例如:
Console.WriteLine(x);
Run Code Online (Sandbox Code Playgroud)
...然后编译器必须生成代码来发现/强制实际类型,它不能做; 你会得到以下编译错误:
- 未定义或导入预定义类型"Microsoft.CSharp.RuntimeBinder.Binder"
- 无法找到编译动态表达式所需的一种或多种类型.您是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?
C#4编译器依赖于DLR,特别是Microsoft.CSharp程序集,用于与之相关的所有内容dynamic.这些在.NET 3.5中不可用.所以答案是否定的,您dynamic在定位Framework 3.5版时无法使用.