VB2010新特性之Lambda表达式

VB2008为了支持Linq已经引入了Lambda表达式的概念。但VB2008的Lambda表达式有局限性,使得VB的Lambda表达式没有C#那么好用,没有得到广泛的使用,如下面的一个使用场景

从Dinners集合中选出DinnerID等于某值的,Dinner对象

上面的功能需求,在之前的VB大部分都是使用For Each实现的,VB2008还可以使用Linq的Where来筛选,VB2010中有了Lambda表达式,我们还可以这样写

    Public Function GetDinner(ByVal id As Integer) As Dinner          Return db.Dinners.SingleOrDefault(Function(d) d.DinnerID = id)      End Function

Lambda表达式是基于匿名委托工作的。有了它,就可以更有效地在VB中进行函数式风格的编程了。

Dim f = Function(x) x + 1   Dim g = Sub(x) Console.WriteLine(x)  Dim h = Function(x, y)               Dim z = x`+ y              Return 2 * Math.Squr(Z)          End Function   Dim i = Sub()              f(1)              g(2)              h(3, 4)          End Sub