Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit voorbeeld ziet u hoe u gemachtigden gebruikt om een procedure door te geven aan een andere procedure.
Een gemachtigde is een type dat u kunt gebruiken zoals elk ander type in Visual Basic. De AddressOf
operator retourneert een gedelegeerde-object wanneer dit wordt toegepast op een procedurenaam.
In dit voorbeeld is er een procedure met een delegate-parameter die een verwijzing naar een andere procedure kan aannemen, verkregen met de AddressOf
-operator.
Gedelegeerde en overeenkomende procedures maken
Maak een gemachtigde met de naam
MathOperator
.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As Double
Maak een procedure met de naam
AddNumbers
parameters en retourwaarde die overeenkomen met die vanMathOperator
, zodat de handtekeningen overeenkomen.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End Function
Maak een procedure genaamd
SubtractNumbers
met een handtekening die overeenkomt metMathOperator
.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End Function
Maak een procedure met de naam
DelegateTest
die een gemachtigde als parameter neemt.Deze procedure kan een verwijzing naar
AddNumbers
ofSubtractNumbers
accepteren, omdat hun signaturen overeenkomen met deMathOperator
signatuur.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
Maak een procedure met de naam
Test
dieDelegateTest
eenmaal aanroept met de delegate voorAddNumbers
als parameter, en opnieuw met de delegate voorSubtractNumbers
als parameter.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End Sub
Wanneer
Test
wordt aangeroepen, wordt eerst het resultaat weergegeven vanAddNumbers
die worden toegepast op5
en3
, wat 8 oplevert. Vervolgens wordt het resultaat vanSubtractNumbers
handelen op9
en3
weergegeven, wat 6 is.