c# - 是否有适用于 .Net 3.5 的 C#4.0 更改列表?

标签 c# .net c#-4.0 compatibility

我最近看到了很多 C# 4.0 的变化。我真的很喜欢其中的一些。不过,出于兼容性原因,我还不想继续使用 .Net 4.0。

那么,是否有适用于 .Net 3.5 或更低版本的新 C# 4.0 语言功能的完整列表?

例如,默认参数是否需要 .NET 4.0 CLR,或者它们是编译器功能?可以使用自动属性(C# 3.0 功能)并仍然以 .NET 2.0 为目标,因为这不需要 Framework 支持,但不能使用 LINQ 表达式,因为这确实需要 Framework 3.5。

请不要说“当然 C#4.0 不能在 .Net 3.5 中工作,因为它更旧”

最佳答案

4.0 中的 C# 编译器附带了一个新的多目标功能。简短版本是它将生成一个程序集,其中包含定义 System.Object(通常是 mscorlib.dll)的引用中存在的任何元数据版本。这使您可以使用它为 2.0 和 3.5 以及各种版本的 Silverlight 编译程序集。引入此功能是为了支持 Visual Studio 2010 中的多目标。

因此,您可以使用 C# 4.0 编译器编译 3.5 程序集,并使用您想要的任何 C# 4 功能,只要不特别依赖 4.0 库。例如,命名参数和可选参数可以正常工作,因为它们不使用任何 4.0 框架功能。然而,Dynamic 可以,因此开箱即用,它不能在 3.5 上运行。

这里有一篇关于此的帖子,涵盖了基础知识。

http://blogs.msdn.com/ed_maurer/archive/2010/03/31/multi-targeting-and-the-c-and-vb-compilers.aspx

入围名单(来自 Ed 的帖子)是:

  • 命名参数和可选参数
  • 某些 COM 语法改进(例如,“省略引用”)
  • 一般方差

行不通的事情包括动态和 no-pia(我们在实现它们所花费的时间方面的两项最大支出)。前者需要框架支持,后者需要运行时支持。

关于c# - 是否有适用于 .Net 3.5 的 C#4.0 更改列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561022/

相关文章:

c# - 如何更改 Thread 中 UI 项的值?

c# - 使用 Microsoft.Graph API 检索 ItemAttachment

.net - Powershell 4中的方法解析错误

c# - 在 C# winforms 中消除继承 "magic"的最佳方法?

c# - 来自另一个类的列表框计数项目始终返回 0

c#-4.0 - 尝试从 VS 2012 发布网站时,导致 NormalizeServiceUrl 和 Missing or Invalid property 错误的原因是什么

c# - 如何根据 DataAnnotation 中的另一个属性验证一个属性

c# - LINQ-To-SQL 如何防止 SQL 注入(inject)?

c# - .NET 代码中的漂亮格式 sql,性能?

c# - 使用一个函数从 DataRow 或 DataReader 中提取