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 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 de délégué qui peut prendre une référence à une autre procédure, obtenue avec l'opérateur AddressOf.
Création du délégué et des 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 à ceux de MathOperator, de sorte 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 signature de MathOperator.
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 appelle DelegateTest une fois avec le délégué de AddNumbers comme paramètre, puis une autre fois avec le délégué de SubtractNumbers comme paramètre.
Protected Sub Test() DelegateTest(5, AddressOf AddNumbers, 3) DelegateTest(9, AddressOf SubtractNumbers, 3) End Sub
Lorsque la procédure Test est appelée, elle affiche d'abord le résultat de l'application de AddNumbers sur 5 et 3, ce qui donne 8. Le résultat de l'application de SubtractNumbers sur 9 et 3 est affiché, ce qui donne 6.
Voir aussi
Tâches
Comment : appeler une méthode déléguée (Visual Basic)
Référence
Opérateur AddressOf (Visual Basic)