Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird gezeigt, wie Stellvertretungen zum Übergeben einer Prozedur an eine andere Prozedur verwendet werden.
Ein Delegat ist ein Typ, den Sie wie jeden anderen Typ in Visual Basic verwenden können. Der AddressOf Operator gibt ein Delegate-Objekt zurück, wenn es auf einen Prozedurnamen angewendet wird.
Dieses Beispiel verfügt über eine Prozedur mit einem Delegatenparameter, der einen Verweis auf eine andere Prozedur annehmen kann, die mit dem AddressOf Operator abgerufen wird.
Erstellen des Delegaten und der übereinstimmenden Prozeduren
Erstellen Sie eine Stellvertretung mit dem Namen
MathOperator.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As DoubleErstellen Sie eine Prozedur
AddNumbersmit Parametern und Rückgabewert, die mit denenMathOperatorübereinstimmen, sodass die Signaturen übereinstimmen.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End FunctionErstellen Sie eine Prozedur namens
SubtractNumbersmit einer Signatur, die mitMathOperatorübereinstimmt.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End FunctionErstellen Sie eine Prozedur mit dem Namen
DelegateTest, die einen Delegaten als Parameter verwendet.Dieses Verfahren kann einen Verweis auf
AddNumbersoderSubtractNumbers, da ihre Signaturen mit derMathOperatorSignatur übereinstimmen, akzeptieren.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 SubErstellen Sie eine Prozedur mit dem Namen
Test, dieDelegateTesteinmal mit dem Delegaten fürAddNumbersals Parameter und erneut mit dem Delegaten fürSubtractNumbersals Parameter aufruft.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubWenn
Testaufgerufen wird, zeigt es zuerst das Ergebnis der Auswirkung vonAddNumbersauf5und3, was 8 ist. Dann wird das Ergebnis der Aktion vonSubtractNumbersauf9und3angezeigt, das 6 ist.