以下代码生成编译器错误“Expression expected”(Sub带下划线)。
Dim lambda As Action(Of Integer) = Sub(x) Console.WriteLine(x)
为什么这不起作用?
注意:相应的C#代码有效:
Action<int> lambda = x => Console.WriteLine(x);
答案 0 :(得分:3)
我猜你正在使用Visual Studio 2008.VB.NET中的动作lambdas(Sub
keyword)have been added in VB 10,它随Visual Studio 2010一起提供。对于多行lambda来说也是如此,顺便说一句。
请注意,这不是框架问题,而是编译器问题:只要您使用VS 2010编译器,即使在.NET 3.5项目中也可以使用action lambdas。
C#在VB之前有动作lambdas,这就是为什么C#示例即使在VS 2008中也能正常工作。