Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 Double
Créez une procédure nommée
AddNumbers
avec 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 Function
Créez une procédure nommée
SubtractNumbers
avec une signature qui correspondMathOperator
.Function SubtractNumbers( ByVal x As Double, ByVal y As Double ) As Double Return x - y End Function
Créez une procédure nommée
DelegateTest
qui prend un délégué en tant que paramètre.Cette procédure peut accepter une référence à
AddNumbers
ouSubtractNumbers
, car leurs signatures correspondent à laMathOperator
signature.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
Créez une procédure nommée
Test
qui appelleDelegateTest
une première fois avec le délégué deAddNumbers
comme paramètre, puis une deuxième fois avec le délégué deSubtractNumbers
comme paramètre.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End Sub
Lorsqu’on appelle
Test
, il affiche d’abord le résultat de l'action deAddNumbers
sur5
et3
, dont le résultat est 8. Ensuite, le résultat deSubtractNumbers
agissant sur9
et3
est affiché, ce qui est 6.