2011-12-23 81 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