lambda 过程
如果仅在某个事件代码中,需要反复使用某个过程(Sub或Function),但不需要在其他事件中使用这个过程,那么可以使用lambda过程。
定义lambda过程过程的时候,不需要指定过程名,也不需要用As指定返回类型,直接将Function或Sub赋值给一个变量,通过变量调用这个lambda过程。
lambda过程可以直接在事件代码中定义,不需要在全局代码中定义,更便于维护和使用,
示例一
你可以直接复制下面的代码到命令窗口测试执行
'定义一个lambda
,赋值给变量getSortColumn
Dim
getSortColumn =
Function(index
As
Integer)
Select
Case
index
Case
0
Return
"FirstName"
Case
1
Return
"LastName"
Case
2
Return
"CompanyName"
Case
Else
Return
"LastName"
End
Select
End
Function
'lambda过程定义完成
Dim
sc1
As
String
= getSortColumn.Invoke(0)
'通过变量的Invoke调用lambda过程
Dim
sc2
As
String
= getSortColumn.Invoke(3)
MessageBox.Show(sc1)
MessageBox.Show(sc2)
需要注意的是,定义lambda过程的语句后面不能有任何内容,注释也不行,所以下面的代码会出错:
Dim getSortColumn = Function(index As Integer) '定义一个lambda ,赋值给变量getSortColumn
示例二
如果不需要返回值,则在定义lambda过程的时候,用Sub代替Funtion,例如:
Dim
ShowSum =
Sub(v1
As
Double,
v2
As
Double,
v3
As
Double)
Dim
sum
As
Double
sum = v1 + v2 + v3
MessageBox.Show("合计:"
& sum)
End
Sub
ShowSum.Invoke(1, 2, 3)
示例三
如果lambda过程只有一行代码,可以这样简写为一行
Dim ShowMsg = Function(msg) Messagebox.Show(msg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
ShowMsg.Invoke("今天星期五啦")
上面的代码等效于:
Dim
ShowMsg =
Function(msg)
Messagebox.Show(msg,
"提示",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End
Function
ShowMsg.Invoke("今天星期五啦")