.Net 2.0 上的 C# 3.0 兼容性
-
05-07-2019 - |
题
什么是 C#3.0 我们可以在面向 .Net 2.0 框架的应用程序中使用哪些语言功能?
PS:我知道很少有像 Lambda 表达式和 var
关键词
解决方案
请看这里:
在 .Net 2.0 应用程序中使用 C# 3.0 (.Net 3.5) 语法
全面了解针对 .NET 2.0 Framework 和使用 C# 3.0 时可以做什么和不能做什么。
总之:
- 你 不能 使用新的 3.5 程序集(System.Data.Linq、System.Xml.Linq、System.Core)。
- 你 不能 使用 Linq/查询扩展 或者 扩展方法 (但是,请参阅下文了解启用 Linq/查询语法和扩展方法的使用方法!)。
- 你 能 使用 变量关键字, Lambda 语句, 对象初始化器, 匿名类型 & 自动实现的属性.
扩展方法可以工作,但是,它们需要“System.Runtime.CompilerServices.ExtensionAttribute”才能工作,并且此类型可以在 System.Core DLL 中找到(严格来说,它不是 .NET 2.0 框架的一部分)。
查询语法不能“开箱即用”,可以这么说,但是,如果有第 3 方 DLL(例如 LINQ桥) 用来。此 DLL 有效地重新实现了以 .NET 2.0 框架为目标时执行 LINQ 所需的许多“缺失”类型。它还实现了扩展方法工作所需的“ExtensionAttribute”类型,因此只需从项目中添加/引用 LINQBridge DLL 即可启用 LINQ、查询语法/表达式和扩展方法!
其他提示
我有一个 关于这个主题的文章.
简单来说:
支持的:
- 自动实现的属性、隐式类型局部变量和数组、对象和集合初始值设定项、匿名类型、部分方法、转换为委托类型的 lambda 表达式。
部分支持:
- 扩展方法(需要属性)和查询表达式(需要像 LINQBridge 这样的东西才有用)
不支持:
- Lambda 转换为表达式树
其实我听说过转换成表达式树 是 可以借助 Mono 的实现 System.Core
. 。不过我还没试过...我一直想这样做(然后更新页面)。
不隶属于 StackOverflow