Udostępnij za pośrednictwem


Jak: przekazać procedur do innej procedury w języku 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

Jak: wywoływanie metody obiektu delegowanego (Visual Basic)

Informacje

Operator AddressOf (Visual Basic)

Instrukcja delegata

Inne zasoby

Pełnomocnicy (Visual Basic)