Partager via


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

  1. Créez un délégué appelé MathOperator.

    Delegate Function MathOperator( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
    
  2. Créez une procédure nommée AddNumbers avec des paramètres et une valeur de retour qui correspond à ceux de MathOperator, afin que les signatures correspondent.

    Function AddNumbers( 
        ByVal x As Double, 
        ByVal y As Double 
    ) As Double
        Return x + y
    End Function
    
  3. 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
    
  4. 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 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
    
  5. Créez une procédure nommée Test qui appelle DelegateTest une fois avec le délégué pour AddNumbers comme paramètre, puis avec le délégué pour SubtractNumbers 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’action AddNumbers sur 5 et 3, qui font 8. Ensuite, le résultat de l’action SubtractNumbers sur 9 et 3 s’affiche, qui font 6.

Voir aussi