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 DoubleMaak een procedure met de naam
AddNumbersparameters 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 FunctionMaak een procedure genaamd
SubtractNumbersmet een handtekening die overeenkomt metMathOperator.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End FunctionMaak een procedure met de naam
DelegateTestdie een gemachtigde als parameter neemt.Deze procedure kan een verwijzing naar
AddNumbersofSubtractNumbersaccepteren, omdat hun signaturen overeenkomen met deMathOperatorsignatuur.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 SubMaak een procedure met de naam
TestdieDelegateTesteenmaal aanroept met de delegate voorAddNumbersals parameter, en opnieuw met de delegate voorSubtractNumbersals parameter.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubWanneer
Testwordt aangeroepen, wordt eerst het resultaat weergegeven vanAddNumbersdie worden toegepast op5en3, wat 8 oplevert. Vervolgens wordt het resultaat vanSubtractNumbershandelen op9en3weergegeven, wat 6 is.