繁体   English   中英

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

[英]Which features of C# 5.0 can be compiled to run on .net 4.0

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

编辑:

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

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

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

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

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

就功能而言,任何适用于4.0的语法都可以在4.0中编译,即使您最初在5.0中生成它也是如此。 如果您在项目属性中更改.NET Framework版本,Visual Studio 11将通知您在4.0中无法运行的代码,因此这将是我的指南。 如果编译为4.0是个问题,请使用VS 11进行编辑,但将框架兼容性保留为4.5。

可能有一些较新的FUD将编译为旧版本。 以前的化身也是如此,但是使用新语法并尝试向后编译会受到影响。

我不知道一个明确的语言功能列表(关键字,等),并没有找到一个搜索。 我还没有在野外看到4.5语言规范。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM