.Net 2.0 上的 C# 3.0 兼容性

发布于 2024-08-03 22:21:45 字数 128 浏览 6 评论 0 原文

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

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

What are the C# 3.0 language features we can use in an application that targets .Net 2.0 framework ?

PS:I know few like Lambda expressions and var keyword

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

〗斷ホ乔殘χμё〖 2024-08-10 22:21:45

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

简而言之:

支持:

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

部分支持:

  • 扩展方法(需要属性)和查询表达式(需要像 LINQBridge 这样的东西才有用)

不支持:

  • 转换为表达式树的 Lambda

实际上,我听说可以转换为表达式树借助 Mono 的 System.Core 实现。不过我还没有尝试过......我一直想这样做(然后更新页面)。

I have an article on this very topic.

In brief:

Supported:

  • Automatically implemented properties, implicitly typed local variables and arrays, object and collection initializers, anonymous types, partial methods, lambda expressions converted into delegate types.

Partially supported:

  • Extension methods (requires an attribute) and query expressions (requires something like LINQBridge to be useful)

Not supported:

  • Lambdas converted into expression trees

In fact, I have heard that conversion into expression trees is available with the aid of Mono's implementation of System.Core. I haven't tried it yet though... I keep meaning to do so (and then update the page).

仙女山的月亮 2024-08-10 22:21:45

请参阅此处:

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

完整了解以下情况下可以做什么和不能做什么针对 .NET 2.0 Framework 并使用 C# 3.0。

总之:

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

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

Please see here:

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

For a complete run down of what you can and can't do when targeting the .NET 2.0 Framework and using C# 3.0.

In summary:

Extension methods sort-of work, however, they require "System.Runtime.CompilerServices.ExtensionAttribute" in order to work, and this type is found within the System.Core DLL (which is not strictly part of the .NET 2.0 framework).

Query Syntax cannot be used "out of the box" so-to-speak, however, it can be used if a 3rd party DLL (like LINQBridge) is used. This DLL effectively re-implements many of the "missing" types that you need to perform LINQ when targeting the .NET 2.0 framework. It also implements the "ExtensionAttribute" type needed for Extension methods to work, so simply adding/referencing the LINQBridge DLL from your project will enable LINQ, Query Syntax/Expressions and Extension Methods!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文