C#5.0的哪些功能可以编译为在.net 4.0上运行
本文关键字:net 运行 编译 功能 C#5 | 更新日期: 2023-09-27 18:28:19
我预计框架级别的更新(如async)将无法编译为在较低的框架上工作,但当使用C#5.0针对.net 4.0进行编译时,编译器差异(如foreach循环变量范围)是否能正常工作<有人能提供一份明确的名单吗>有人能提供一份明确的名单吗>
编辑:
有人能回答编译器级别的更改(如foreach变量范围)在对早期框架版本使用C#5.0时是否会有不同的行为吗。
所有这些。没有什么真正需要新的运行时支持——有些功能只需要新的库。但并不要求您根据.NET4.5库编译它——您也可以提供相同API的自己的实现。
例如,将以下文件添加到您的项目中,以启用对.NET 4.0项目中异步/等待的支持:https://gist.github.com/1961087
我还没有在调用方信息属性中尝试过,但我非常确信,即使您自己定义它们,而不是使用.NET 4.5附带的属性,这些属性也会起作用。
同样的技巧也适用于C#3中的class ExtensionAttribute
,以便在.NET 2.0中使用扩展方法,您甚至可以在.NET 2.0(LinqBridge)中使用完整的LINQ to Objects
就功能而言,任何在4.0中工作的语法都可以在4.0中编译,即使最初是在5.0中生成的。如果您在项目属性中更改.NET Framework版本,Visual Studio 11将通知您在4.0中无法工作的代码,因此这将是我的指南。如果编译到4.0是一个问题,请使用VS11进行编辑,但将框架兼容性保留为4.5。
可能有一些更新的FUD会编译到旧版本。以前的版本也是如此,但使用新语法并尝试向后编译是偶然的。
我不知道一个明确的语言特征列表(关键字等),也没有找到一个搜索。我还没有在野外看到4.5语言规范。