c#与vb.net中的lambda表达式

jer*_*enh 9 c# vb.net lambda

从功能上讲,C#和VB.Net中的lambda表达式之间是否存在差异(除了语法之外)?

编辑:跟进CraigTP的回答:任何对.Net 4情况的引用?

编辑:我问,因为我习惯了C#,但是对于下一个项目,客户要求VB.Net.我们不是先验者.我们意识到大多数语言结构都支持两种语言.但是,我们特别喜欢C#实现lambda表达式的方式.我们希望概述与VB.Net的差异

编辑:接受CraigTP的答案,指出我目前认为最重要的区别.

总结一下:VB.Net 9不支持lambda表达式中的多行语句,而lambda必须始终返回一个值.这两个问题都在VB.Net 10中得到解决

Cra*_*gTP 13

然而,正如Joe Albahari这篇论坛帖子中所说的那样,没有任何功能差异:

VB.NET不支持多语句lambda表达式或匿名方法.

请注意,这是基于C#3.0和VB.NET 9.0(即Visual Studio 2008版本的语言) - 我不确定它是否仍适用于Visual Studio 2010(分别为C#4.0和VB.NET 10.0).

编辑:

按照理查德Szaley和我本人的意见,VB.NET 10.0(这将是Visual Studio 2010中的一部分)DOES支持多lambda表达式,这里是一个MSDN Channel 9的视频的链接,显示了此功能(许多沿其他!):

Lucian Wischik和Lisa Feigenbaum:Visual Basic 10中的新功能


Ric*_*lay 8

VB.NET(2010年之前)中的Lambda表达式必须返回一个值.例如,以下语法在VB.NET 9中无效,但在VB.NET 10中有效(来自Mike McIntyre博客的代码):

Array.ForEach(numbers, Sub(n)
    Console.Write("Number: ")
    Console.WriteLine(n)
End Sub)
Run Code Online (Sandbox Code Playgroud)