VB.NET Lambda 表达式

发布于 2024-07-27 17:09:07 字数 163 浏览 2 评论 0原文

如果我有 Visual Studio 2008 并且我的目标是 .NET 2.0 应用程序,我仍然可以使用 Lambda 表达式吗? 我对 Lambda 表达式的理解是,它是内置于编译器而不是框架中的功能,因此我的结论是我可以在 .NET 2.0 应用程序中使用 Lambda。 有人可以告诉我是否是这样吗?

If I have Visual Studio 2008 and I target a .NET 2.0 application, can I still use Lambda Expressions? My understanding of Lambda Expressions is that its a feature built into the compiler, not the framework, so my conclusion would be that I could use Lambda in .NET 2.0 application. Can someone please tell me if this is so?

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

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

发布评论

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

评论(3

余厌 2024-08-03 17:09:07

是的,这是完全支持的。 只要您不构建表达式树或以其他方式引用 System.Core、System.Xml.Linq 等...在向下定位的 2.0 应用程序中使用 Lambda 表达式是完全合法的。 VS2008 (VB9) 中引入的任何其他编译器功能都是如此。

编辑

一些答案错误地指出 Lambda 表达式是 3.5 或 3.0 功能的一项功能。 Lambda 表达式是一种编译器功能,而不是框架功能。 它们不需要框架支持即可运行,并且在目标为 2.0 的应用程序中使用它们是完全合法的。

唯一会遇到麻烦的地方是如果您使用 lambda 作为表达式树。 表达式树既是编译器又是框架功能,需要 3.5 才能正常运行。 但您必须努力工作才能实现这一点,因为我们正在积极努力防止它发生。

Yes this is completely supported. As long as you do not build an expression tree or otherwise reference System.Core, System.Xml.Linq, etc ... it is perfectly legal to use Lambda expressions in a down targetted 2.0 application. This is true of any other compiler feature introduced in VS2008 (VB9).

EDIT

Several answers incorrectly state that Lambda Expressions are a feature of the 3.5 or 3.0 feature. Lambda expressions are a compiler feature not a Framework one. They require no framework support in order to function and it's perfectly legal to use them in a application down targetted to 2.0.

The only place you would get into trouble is if you used a lambda as an expression tree. Expression Trees are both a compiler and framework feature and do require 3.5 to function correctly. But you have to work hard to enable this as we actively try to prevent it from happening.

情话已封尘 2024-08-03 17:09:07

是的,你是对的。 您可以使用 lambda 表达式代替匿名方法。 编译器会将其余的整理出来。 尝试一下:

int sum = 0;
Array.ForEach(new[] {1, 2, 3, 4}, x => sum += x);

您不能使用 .Net 3.5 的任何新功能(即 Linq)。 这样做需要添加对 System.Linq、System.Core 等的引用,而这些在 .Net 2.0 中不存在。

Yes you are correct. You can use lambda expressions in place of anonymous methods. The compiler will sort the rest out. Try this:

int sum = 0;
Array.ForEach(new[] {1, 2, 3, 4}, x => sum += x);

What you cannot do is to use any of the new functionality of .Net 3.5 (ie. Linq). Doing so requires adding references to System.Linq, System.Core,etc.., which are not present in .Net 2.0.

简单 2024-08-03 17:09:07

这是行不通的。 使用 Linq 需要 System.Linq 成为框架程序集的一部分,而 .NET 2.0 不具备这一点。

It does not work. Using Linq requires the System.Linq to be part of the framework assembly, which .NET 2.0 does not have.

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