2009-07-21 102 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等的引用。