4

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

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

4

2 回答 2

5

我有一篇关于这个主题的文章。

简单来说:

支持的:

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

部分支持:

  • 扩展方法(需要一个属性)和查询表达式(需要 LINQBridge 之类的东西才有用)

不支持:

  • 将 Lambda 转换为表达式树

事实上,我听说可以借助 MonoSystem.Core. 不过我还没有尝试过……我一直想这样做(然后更新页面)。

于 2009-09-10T10:31:20.867 回答
4

请看这里:

在 .Net 2.0 应用程序中使用 C# 3.0 (.Net 3.5) 语法

全面了解针对 .NET 2.0 框架和使用 C# 3.0 时可以做什么和不能做什么。

总之:

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

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

于 2009-09-10T10:46:50.277 回答