可以编译C#5.0的哪些功能以在.net 4.0上运行

And*_*lon 8 c# c#-5.0

我希望框架级别更新(例如async)无法编译为在较低的框架上工作,但编译器差异(例如foreach循环变量范围)在使用C#5.0针对.net 4.0编译时是否正常工作?任何人都可以提供明确的清单吗?

编辑:

而不是要求一个确定的列表,我将其作为很多要求回过头来,任何人都能够回答编译器级别更改(如foreach变量范围)在使用C#5.0对抗早期框架版本时的行为会有所不同.

Dan*_*iel 4

他们全部。没有什么真正需要新的运行时支持 - 有些功能只需要新的库。但不要求您针对 .NET 4.5 库进行编译 - 您也可以提供您自己的同一 API 实现。

例如,将以下文件添加到您的项目中以在 .NET 4.0 项目中启用对 async/await 的支持:https://gist.github.com/1961087

我还没有尝试过调用者信息属性,但我很确定即使您自己定义它们而不是使用 .NET 4.5 附带的属性,这些属性也会起作用。

同样的技巧可以class ExtensionAttribute在 C# 3 中使用,以便在 .NET 2.0 中使用扩展方法,您甚至可以在 .NET 2.0 中使用完整的 LINQ-to-Objects ( LinqBridge )