VB.NET - 包含Sub / Function的Method参数

时间:2012-11-17 13:18:09

标签: vb.net

请查看下面的代码。

Dim results As IEnumerable(Of Customer) = ExecuteDataReader( _
               "SELECT * FROM Customer WHERE Sales> @MinSales", _
          Sub(p) p.Add("@MinSales", SqlDbType.Double).Value = 10000.0, _
          Function(r) New Customer() With {Name=r("Name"), Address=r("Address"), Sales=r("Sales") })

For Each c As Customer in results
   '...
Next

在我发布的上一个问题中,回答者发布了此代码。我不理解代码的sub(p)function(r)部分。

不幸的是,我没有依据来寻找答案。因此,在完成有限的研究后,我已经发布了这个问题。

sub(p)function(r)是什么意思?

更新14:54

请参阅下文。意思是:(Of T)ByVal castRow As Function(Of IDataRecord, T)

Public Iterator Function ExecuteDataReader(Of T)(ByVal sql As String,
ByVal addParams as Action(Of SqlParameterCollection), ByVal castRow As
Funnction(Of IDataRecord, T)) As IEnumerable(Of T)

1 个答案:

答案 0 :(得分:1)

Lambda Expressions

  

lambda表达式是一个没有名称的函数或子例程,可以在委托有效的任何地方使用。 Lambda表达式可以是函数或子例程,可以是单行或多行。您可以将当前范围中的值传递给lambda表达式。

Dim increment1 = Function(x) x + 1
Dim increment2 = Function(x)
                     Return x + 2
                 End Function