委托与函数调用

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 方法的两次单独调用中,您提供了对两个函数的单独引用,GreaterThanLessThan,两者都符合 Delegate Function 声明中规定的限制。因此,该语言允许在调用中使用它们。并且,按照指示,CheckCompare 方法会在被告知这样做时调用已提供给它的委托函数。

它不知道(但是,它不关心)它究竟是哪个代表。该语言确保已提供 "an acceptable delegate",所有 this 方法需要做的就是调用 "it."