Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du använder ombud för att skicka en procedur till en annan procedur.
Ett ombud är en typ som du kan använda som vilken annan typ som helst i Visual Basic. Operatorn AddressOf returnerar ett ombudsobjekt när det tillämpas på ett procedurnamn.
Det här exemplet har en procedur med en delegatparameter som kan referera till en annan procedur som hämtas med operatorn AddressOf .
Skapa ombuds- och matchningsprocedurerna
Skapa ett ombud med namnet
MathOperator.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As DoubleSkapa en procedur med namnet
AddNumbersmed parametrar och returvärde som matchar värdenaMathOperatorför , så att signaturerna matchar.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End FunctionSkapa en procedur med namnet
SubtractNumbersmed en signatur som matcharMathOperator.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End FunctionSkapa en procedur med namnet
DelegateTestsom tar ett ombud som parameter.Den här proceduren kan acceptera en referens till
AddNumbersellerSubtractNumbers, eftersom deras signaturer matchar signaturenMathOperator.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 SubSkapa en procedur med namnet
Testsom anroparDelegateTesten gång med ombudet förAddNumberssom en parameter och igen med ombudet förSubtractNumberssom parameter.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubNär
Testanropas visas först resultatet avAddNumbersatt agera på5och3, vilket är 8. Sedan visas resultatet avSubtractNumbersatt agera på9och3, vilket är 6.