【发布时间】:2011-01-07 14:29:49
【问题描述】:
自 .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 只是 VB 表达new Action(AnAction) 的方式。另外我只是把它写到浏览器中,所以它也可能无法编译。
人们对阅读和使用这些编译器通用操作而不是根据解决方案中的确切要求而制作的适当特殊实体有何感受?
【问题讨论】:
标签: .net vb.net compiler-construction action