有人可以解释为什么我会这样做这个代码吗? 我对代表有一点把握,但不了解其优点 有人可以尝试并帮助解释我在这里做的事情。我是班级和代表的新手。只是需要一些帮助。 这是我的委托代码
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
Dim NewCompare As New Compare
NewCompare.Num1 = 3
NewCompare.Num2 = 2
NewCompare.CheckCompare(AddressOf GreaterThan)
NewCompare.CheckCompare(AddressOf SmallerThan)
End Sub
Function GreaterThan(Num1 As Integer, Num2 As Integer) As Boolean
Return Num1 > Num2
End Function
Function SmallerThan(Num1 As Integer, Num2 As Integer) As Boolean
Return Num1 < Num2
End Function
End Class
Class Compare
Property Num1 As Integer
Property Num2 As Integer
Delegate Function CompareValues(Num1 As Integer, Num2 As Integer) As Boolean
Public Sub CheckCompare(compare As CompareValues)
If compare(_Num1, _Num2) Then
MsgBox(_Num1)
Else
MsgBox(_Num2)
End If
End Sub
End Class
答案 0 :(得分:1)
嗯,“代表团”的“基本理念”很简单:“识别你可以问的其他人。”
在此示例中,Compare
类存在以“比较两个对象”。但是你已经说过,委托对其他一些不属于自己定义的函数的责任。此外,您确切地指定了可接受的“委托函数”必须是什么样的。
Delegate Function
声明指定该委托必须是什么样的。 “可接受的委托必须返回Boolean
,并且必须接受(确切地......)两个Integer
参数。”该语言在编译时确保此是这样。
在您的两个单独调用CheckCompare
类的Compare
方法中,您提供了对两个函数GreaterThan
和LessThan
的单独引用,这两个函数都是符合Delegate Function
声明中规定的限制。因此,该语言允许它们在调用中使用。并且,按照指示,CheckCompare
方法会在被告知时调用它已被赋予的委托函数。
它不知道(但是,它并不关心) 委托它。该语言确保提供了“可接受的委托”,并且所有此方法需要做的是调用“它”。