Vb.net 委托与函数调用

Vb.net 委托与函数调用,vb.net,delegates,Vb.net,Delegates,有人能解释一下我为什么要这样做吗? 我对代表有一点了解,但不了解其优点 有人能帮我解释一下我在这里做什么吗。我对班级和代表都很陌生。只是需要一些帮助。 这是我的代理代码 Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click Dim NewCompare As New Compare

有人能解释一下我为什么要这样做吗? 我对代表有一点了解,但不了解其优点 有人能帮我解释一下我在这里做什么吗。我对班级和代表都很陌生。只是需要一些帮助。 这是我的代理代码

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
公共类表单1
私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击,按钮2。单击
将新的pare变为新的Compare
NewCompare.Num1=3
NewCompare.Num2=2
新参数检查比较(大于的地址)
新副本检查比较(SmallerThan的地址)
端接头
函数GreaterThan(Num1为整数,Num2为整数)为布尔值
返回Num1>Num2
端函数
函数SmallerThan(Num1为整数,Num2为整数)为布尔型
返回Num1
好吧,“授权”的“基本理念”很简单:“确定你可以问的其他人。”

在本例中,
Compare
类用于“比较两个对象”。但您已经说过,它是将该职责委托给某个不属于其自身定义的其他函数。此外,您还可以精确地指定可接受的“委托函数”的外观

委托函数
声明指定委托必须是什么样子。“一个可接受的委托必须返回一个
布尔值
,并且它必须(准确地…)接受两个
整数
参数。”该语言在编译时确保这一点

在对
Compare
类的
CheckCompare
方法的两个单独调用中,您提供了对两个函数的单独引用,
大于
小于
,这两个函数都符合
委托函数
声明中规定的限制。因此,该语言允许在调用中使用它们。并且,按照指示,
CheckCompare
方法在被告知这样做时,调用已给定的委托函数


它不知道(但不在乎)它到底是哪个委托。该语言确保提供了“可接受的委托”,而该方法需要做的就是调用“it”。

这个问题可能会因为过于宽泛而结束。简单的回答是,对于这个特定的示例,单独使用委托没有任何好处。但是,在某些情况下,您希望能够让用户提供实现特定类型操作的方法。在这种情况下,用户可以灵活地向类注入任何类型的比较。这个特殊的类不够复杂,无法说明这种方法的好处,但在其他情况下,它可能更加明显。