因此,我们终于在一些开发人员站上安装了 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 x = 3;
这一行代码可以编译,因为就类型而言,dynamic
仅编译为 object
。但是,如果您随后尝试对该变量做任何事情,如:
Console.WriteLine(x);
... 那么编译器将不得不生成代码来发现/强制转换真实类型,这是它做不到的;你会得到以下编译错误:
- Predefined type 'Microsoft.CSharp.RuntimeBinder.Binder' is not defined or imported
- One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll?
C# 4 编译器依赖于 DLR,特别是 Microsoft.CSharp 程序集来处理与dynamic
相关的所有内容。这些在 .NET 3.5 中不可用。所以答案是否定的,当目标框架版本 3.5 时,您不能使用 dynamic
。
关于C# 4.0 和 .Net 3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6218245/