从.net 4.0开始,是使用语法的新礼节,例如:
Private Sub Main()
MyMethod(AddressOf AnAction)
End Sub
Private Sub MyMethod(ByVal toDo As Action(Of String, Integer, Boolean))
toDo.Invoke("Tom", 1, True)
End Sub
Private Sub AnAction(ByVal p1 As String, ByVal p2 As Integer, ByVal p3 As Boolean)
End Sub
相反:
Private Delegate Sub MyActionDlg(ByVal p1 As String, ByVal p2 As Integer, ByVal p3 As Boolean)
Private Sub Main()
MyMethod(AddressOf AnAction)
End Sub
Private Sub MyMethod(ByVal toDo As MyActionDlg)
toDo.Invoke("Tom", 1, True)
End Sub
Private Sub AnAction(ByVal p1 As String, ByVal p2 As Integer, ByVal p3 As Boolean)
End Sub
这也与Tuples / Func相同。写作很好但是在某些地方感觉有些邋..为什么有人想要Tuple(Of T,T2,T3,T4)而不是一个好类?我的实际代码片段具有这些嵌套,因此它在一系列方法中传递Action。
对不起VB的例子,AddressOf只是VBs说new Action(AnAction)
的方式。此外,我只是将其写入浏览器,因此它可能无法编译。
如何让人们阅读和使用这些编译器通用操作,而不是为解决方案中的确切要求而设计的适当特殊实体?
答案 0 :(得分:3)
新的Func
和Action
委托是简单委托的首选,例如LINQ方法中的委托。
如果使用Func
或Action
s会导致类型名称不可读,那么您当然应该定义自己的代理。
通常,您应该选择产生最易读代码的设计。