C# 4.0 和 .Net 3.5

标签 c# .net .net-3.5

因此,我们终于在一些开发人员站上安装了 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);

... 那么编译器将不得不生成代码来发现/强制转换真实类型,这是它做不到的;你会得到以下编译错误:

  1. Predefined type 'Microsoft.CSharp.RuntimeBinder.Binder' is not defined or imported
  2. 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/

相关文章:

c# - MSIL 问题(基本)

c# - 获取所选下拉列表选项的值

c# - .NET 3.5 中的 HashSet<T> 有什么特别之处?

c# - 如何在 .NET 中出现异常后调试外部代码 (vs2008)

c# - 使用字符串、int 数组反序列化 json - .net core C#

C# 动态 SQL INSERT ... SELECT

c# - 几个函数的通用替换

.net - Get-ChildItem 与直接使用具有 UNC 路径的 .NET Framework 的 [System.IO.Directory]::GetFiles() 方法

.net - 如何在 Windows 上查询打印队列

c# - 在exe中包含dll?