Porady: przekazywanie procedur do innej procedury w Visual Basic
W tym przykładzie pokazano, jak za pomocą delegatów przekazać procedurę do innej procedury.
Delegat jest typem, którego można użyć jak dowolnego innego typu w Visual Basic. Operator zwraca obiekt delegata AddressOf
po zastosowaniu do nazwy procedury.
W tym przykładzie przedstawiono procedurę z parametrem delegowanym, który może odwoływać się do innej procedury uzyskanej z operatorem AddressOf
.
Tworzenie procedur delegata i dopasowywania
Utwórz delegata o nazwie
MathOperator
.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As Double
Utwórz procedurę o nazwie
AddNumbers
z parametrami i zwracaną wartością zgodnąMathOperator
z parametrami , tak aby podpisy były zgodne.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 zgodnymMathOperator
z .Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End Function
Utwórz procedurę o nazwie
DelegateTest
, która przyjmuje delegata jako parametr.Ta procedura może zaakceptować odwołanie do
AddNumbers
elementu lubSubtractNumbers
, ponieważ ich podpisy są zgodne z podpisemMathOperator
.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
, która wywołujeDelegateTest
raz z pełnomocnikiem jakoAddNumbers
parametr, a następnie ponownie za pomocą delegata jakoSubtractNumbers
parametru.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End Sub
Gdy
Test
jest wywoływana, najpierw wyświetla wynikAddNumbers
działania na5
i3
, czyli 8. Następnie zostanie wyświetlony wynikSubtractNumbers
działania9
i3
jest wyświetlany, czyli 6.