2009-07-21 92 views
5

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

回答

12

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

EDIT

若干答案错误状态Lambda表达式是3.5或3.0的特征的特征。 Lambda表达式是一种编译器功能,不是Framework框架。它们不需要框架支持就可以运行,在目标应用为2.0的应用程序中使用它们是完全合法的。

如果您使用lambda作为表达式树,唯一会遇到麻烦的地方是。表达式树既是编译器和框架功能,也需要3.5才能正常工作。但是,我们必须努力实现这一目标,因为我们积极地尝试阻止其发生。

-3

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

+0

是的,丹丹的权利。另外,不,你不能通过将它们放在你的箱子中来引用3.5程序集。我问过......问题是系统命名空间也有很多变化。 – andy 2009-07-21 23:05:22

2

是的你是对的。您可以使用lambda表达式代替匿名方法。编译器会将其余的排序。试试这个:

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

你不能做的是使用.net 3.5(即Linq)的任何新功能。这样做需要添加对.NET 2.0中不存在的System.Linq,System.Core等的引用。