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