2011-12-23 49 views
0

以下代碼會產生編譯器錯誤「預期表達式」(Sub帶下劃線)。無法按預期使用Lamba表達式

Dim lambda As Action(Of Integer) = Sub(x) Console.WriteLine(x) 

爲什麼這不起作用?

注:相應的C#代碼的工作:

Action<int> lambda = x => Console.WriteLine(x); 

回答

3

我猜你使用Visual Studio 2008的動作lambda表達式在VB.NET(Sub關鍵字)have been added in VB 10,它附帶的Visual Studio 2010年同期順便說一句,對於多線lambda來說也是如此。

請注意,這不是一個框架問題,而是一個編譯器問題:只要您使用VS 2010編譯器,即使在.NET 3.5項目中也可以使用動作lambdas。

C#在VB之前有動作lambdas,這就是爲什麼C#示例在VS 2008中仍然可以工作。

+0

這解釋了一切。謝謝! – 2011-12-23 20:17:16

+0

有沒有辦法在VB.net 3.5中做類似的事情呢? – 2014-06-02 14:09:51

+0

@SimonDugré:當然,它在VB.net 3.5中工作得很好!你只需要使用VS 2010或更高版本。 – Heinzi 2014-06-02 14:37:14