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
Tworzenie obiektu delegowanego, o nazwie MathOperator.
Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As Double
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
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
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
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)