Начиная с .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) поверх классного типа? Мой настоящий фрагмент кода имеет эти вложенные элементы, поэтому он передает действие в цепочке методов.
Извините за пример VB, AddressOf - это просто VBs способ сказать new Action(AnAction)
. Также я просто записал это в браузер, чтобы он тоже не компилировался.
Как люди относятся к чтению и использованию этих общих действий компилятора в отличие от надлежащих специальных сущностей, созданных для их точных требований в решении?