.Net 2.0上的C#3.0兼容性

时间:2009-09-10 10:29:59

标签: c# .net-3.5 .net-2.0 compatibility

我们可以在针对.Net 2.0框架的应用程序中使用哪些 C#3.0 语言功能?

PS:我知道很少有像Lambda表达式和var关键字

2 个答案:

答案 0 :(得分:5)

我有article on this very topic

简而言之:

支持的:

  • 自动实现的属性,隐式类型的局部变量和数组,对象和集合初始值设定项,匿名类型,部分方法,转换为委托类型的lambda表达式。

部分支持:

  • 扩展方法(需要一个属性)和查询表达式(需要像LINQBridge一样有用)

不支持:

  • Lambdas转换为表达式树

事实上,我听说在Mono执行System.Core的帮助下可以转换为表达式树 。我还没有尝试过,但我仍然有意义这样做(然后更新页面)。

答案 1 :(得分:4)

请看这里:

Using C# 3.0 (.Net 3.5) syntax in a .Net 2.0 application

完全了解在面向.NET 2.0 Framework和使用C#3.0时您能做什么和不能做什么。

总结:

扩展方法排序工作,但是,它们需要“System.Runtime.CompilerServices.ExtensionAttribute”才能工作,并且这种类型可以在System.Core DLL中找到(它不是.NET 2.0的严格组成部分)框架)。

查询语法不能直接使用“开箱即用”,但是,如果使用第三方DLL(如LINQBridge),则可以使用它。此DLL有效地重新实现了在针对.NET 2.0框架时执行LINQ所需的许多“缺失”类型。它还实现了Extension方法工作所需的“ExtensionAttribute”类型,因此只需从项目中添加/引用LINQBridge DLL即可启用LINQ,查询语法/表达式和扩展方法!