VB.NET Lambda表达式

时间:2009-07-21 22:57:00

标签: vb.net visual-studio visual-studio-2008 lambda

如果我有Visual Studio 2008并且我的目标是.NET 2.0应用程序,我还可以使用Lambda Expressions吗?我对Lambda表达式的理解是它是编译器内置的一个特性,而不是框架,所以我的结论是我可以在.NET 2.0应用程序中使用Lambda。有人可以告诉我,如果是这样吗?

3 个答案:

答案 0 :(得分:12)

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

编辑

有几个答案错误地指出Lambda表达式是3.5或3.0功能的一项功能。 Lambda表达式是一个编译器功能,而不是Framework。它们不需要框架支持才能运行,并且在面向2.0的应用程序中使用它们是完全合法的。

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

答案 1 :(得分:2)

是的,你是对的。您可以使用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中不存在。

答案 2 :(得分:-3)

它不起作用。使用Linq需要System.Linq成为.NET 2.0没有的框架程序集的一部分。