Porady: przekazywanie procedur do innej procedury w Visual Basic

W tym przykładzie przedstawiono sposób użycia delegatów w celu przekazania procedurę do innej procedury.

Delegat jest typ, który można używać dowolnego typu, w Visual Basic.AddressOf Operator zwraca obiekt delegata, gdy jest stosowany do nazwy procedury.

W tym przykładzie została procedura parametru delegata, którą może przyjąć odwołanie do innej procedury, uzyskanych z AddressOf operatora.

Tworzenie obiektu delegowanego i procedur dopasowywania

  1. Tworzenie obiektu delegowanego, o nazwie MathOperator.

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
  2. Utwórz procedurę o nazwie AddNumbers z parametrów i wartości zwracanej, która odpowiada układowi MathOperator, tak aby dopasować podpisy.

    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double 
        Return x + y
    End Function
    
  3. Utwórz procedurę o nazwie SubtractNumbers z podpisem, który odpowiada MathOperator.

    Function SubtractNumbers( 
        ByVal x As Double, 
        ByVal y As Double
    ) As Double 
        Return x - y
    End Function
    
  4. Utwórz procedurę o nazwie DelegateTest , które przekieruje delegata jako parametr.

    Procedura ta może przyjąć odniesienie do AddNumbers lub SubtractNumbers, ponieważ ich podpisów pasują do siebie MathOperator podpisu.

    Sub DelegateTest( 
        ByVal x As Double, 
        ByVal op As MathOperator, 
        ByVal y As Double 
    )
        Dim ret As Double
        ret = op.Invoke(x, y) ' Call the method.
        MsgBox(ret)
    End Sub
    
  5. Utwórz procedurę o nazwie Test wywołania DelegateTest raz z obiektu delegowanego dla AddNumbers jako parametr i ponownie z obiektu delegowanego dla SubtractNumbers jako parametr.

    Protected Sub Test()
        DelegateTest(5, AddressOf AddNumbers, 3)
        DelegateTest(9, AddressOf SubtractNumbers, 3)
    End Sub
    

    Gdy Test jest wywoływana, to najpierw wyświetlany jest wynik AddNumbers działającej na 5 i 3, który jest 8.Następnie wynik SubtractNumbers działające na 9 i 3 jest wyświetlany, który jest 6.

Zobacz też

Zadania

Porady: wywoływanie metody delegata (Visual Basic)

Informacje

AddressOf — Operator (Visual Basic)

Delegate — Instrukcja

Inne zasoby

Delegaty (Visual Basic)