委托与函数调用
Delegates vs Calling of Functions
谁能解释一下为什么我要这样写这段代码?
我对代表了解不多,但不了解其优势
有人可以尝试帮助解释我在这里做什么吗?我对 类 和代表很陌生。只是需要一些帮助。
这是我的委托代码
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
嗯,"delegation"的"the essential idea"就是:"identify Someone Else that you can ask."
在这个例子中,Compare
class 存在于 "compare two objects." 但你说过它是 委托 的责任一些不属于其自身定义的其他功能。此外,您可以准确指定可接受的 "delegate function" 必须是什么样子。
Delegate Function
声明指定了该委托的外观。 "An acceptable delegate must return a Boolean
, and it must accept (exactly ...) two Integer
parameters." 语言在编译时确保是这样。
在您对 Compare
class 的 CheckCompare
方法的两次单独调用中,您提供了对两个函数的单独引用,GreaterThan
和 LessThan
,两者都符合 Delegate Function
声明中规定的限制。因此,该语言允许在调用中使用它们。并且,按照指示,CheckCompare
方法会在被告知这样做时调用已提供给它的委托函数。
它不知道(但是,它不关心)它究竟是哪个代表。该语言确保已提供 "an acceptable delegate",所有 this 方法需要做的就是调用 "it."
谁能解释一下为什么我要这样写这段代码? 我对代表了解不多,但不了解其优势 有人可以尝试帮助解释我在这里做什么吗?我对 类 和代表很陌生。只是需要一些帮助。 这是我的委托代码
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
嗯,"delegation"的"the essential idea"就是:"identify Someone Else that you can ask."
在这个例子中,Compare
class 存在于 "compare two objects." 但你说过它是 委托 的责任一些不属于其自身定义的其他功能。此外,您可以准确指定可接受的 "delegate function" 必须是什么样子。
Delegate Function
声明指定了该委托的外观。 "An acceptable delegate must return a Boolean
, and it must accept (exactly ...) two Integer
parameters." 语言在编译时确保是这样。
在您对 Compare
class 的 CheckCompare
方法的两次单独调用中,您提供了对两个函数的单独引用,GreaterThan
和 LessThan
,两者都符合 Delegate Function
声明中规定的限制。因此,该语言允许在调用中使用它们。并且,按照指示,CheckCompare
方法会在被告知这样做时调用已提供给它的委托函数。
它不知道(但是,它不关心)它究竟是哪个代表。该语言确保已提供 "an acceptable delegate",所有 this 方法需要做的就是调用 "it."