【发布时间】:2010-11-12 19:52:26
【问题描述】:
如果我有 Visual Studio 2008 并且我的目标是 .NET 2.0 应用程序,我还可以使用 Lambda 表达式吗?我对 Lambda 表达式的理解是它是编译器内置的功能,而不是框架,所以我的结论是我可以在 .NET 2.0 应用程序中使用 Lambda。有人可以告诉我是不是这样吗?
【问题讨论】:
标签: vb.net visual-studio visual-studio-2008 lambda
如果我有 Visual Studio 2008 并且我的目标是 .NET 2.0 应用程序,我还可以使用 Lambda 表达式吗?我对 Lambda 表达式的理解是它是编译器内置的功能,而不是框架,所以我的结论是我可以在 .NET 2.0 应用程序中使用 Lambda。有人可以告诉我是不是这样吗?
【问题讨论】:
标签: vb.net visual-studio visual-studio-2008 lambda
是的,这是完全支持的。只要您不构建表达式树或以其他方式引用 System.Core、System.Xml.Linq 等……在向下定位的 2.0 应用程序中使用 Lambda 表达式是完全合法的。 VS2008 (VB9) 中引入的任何其他编译器功能都是如此。
编辑
一些答案错误地指出 Lambda 表达式是 3.5 或 3.0 功能的一个功能。 Lambda 表达式是一种编译器功能,而不是框架功能。它们不需要框架支持即可运行,并且在针对 2.0 的应用程序中使用它们是完全合法的。
唯一会遇到麻烦的地方是使用 lambda 作为表达式树。表达式树既是编译器又是框架功能,需要 3.5 才能正常运行。但是您必须努力实现这一点,因为我们积极尝试防止它发生。
【讨论】:
是的,你是对的。您可以使用 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 中不存在。
【讨论】:
它不起作用。使用 Linq 需要 System.Linq 是框架程序集的一部分,而 .NET 2.0 没有。
【讨论】: