Comment : passer des procédures à une autre procédure en Visual Basic
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 en Visual Basic. L’opérateur AddressOf
retourne un objet délégué lorsqu’il est appliqué à un nom de procédure.
Cet exemple contient une procédure avec un paramètre délégué qui peut amener une 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é appelé
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 correspond à ceux 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 correspond àMathOperator
.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é comme paramètre.Cette procédure peut accepter une référence à
AddNumbers
ou àSubtractNumbers
, car leurs signatures correspondent à la signatureMathOperator
.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 fois avec le délégué pourAddNumbers
comme paramètre, puis avec le délégué pourSubtractNumbers
comme paramètre.Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End Sub
Quand
Test
est appelé, il affiche d’abord le résultat de l’actionAddNumbers
sur5
et3
, qui font 8. Ensuite, le résultat de l’actionSubtractNumbers
sur9
et3
s’affiche, qui font 6.