Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Cet exemple montre comment utiliser des délégués pour passer une procédure à une autre procédure.
Un délégué est un type que vous pouvez utiliser comme n’importe quel autre type dans Visual Basic. L’opérateur AddressOf retourne un objet délégué lorsqu’il est appliqué à un nom de procédure.
Cet exemple comporte une procédure avec un paramètre délégué qui peut faire référence à une autre procédure obtenue avec l’opérateur AddressOf .
Créer le délégué et les procédures correspondantes
Créez un délégué nommé
MathOperator.Delegate Function MathOperator( ByVal x As Double, ByVal y As Double ) As DoubleCréez une procédure nommée
AddNumbersavec des paramètres et une valeur de retour qui correspondent à celles deMathOperator, afin que les signatures correspondent.Function AddNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x + y End FunctionCréez une procédure nommée
SubtractNumbersavec une signature qui correspondMathOperator.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End FunctionCréez une procédure nommée
DelegateTestqui prend un délégué en tant que paramètre.Cette procédure peut accepter une référence à
AddNumbersouSubtractNumbers, car leurs signatures correspondent à laMathOperatorsignature.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 SubCréez une procédure nommée
Testqui appelleDelegateTestune première fois avec le délégué deAddNumberscomme paramètre, puis une deuxième fois avec le délégué deSubtractNumberscomme paramètre.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End SubLorsqu’on appelle
Test, il affiche d’abord le résultat de l'action deAddNumberssur5et3, dont le résultat est 8. Ensuite, le résultat deSubtractNumbersagissant sur9et3est affiché, ce qui est 6.