Partager via


Comment : surcharger une procédure qui accepte un nombre indéfini de paramètres

Mise à jour : novembre 2007

Si une procédure dispose d'un paramètre ParamArray, vous ne pouvez pas définir une version surchargée acceptant un tableau unidimensionnel comme tableau de paramètres. Pour plus d'informations, consultez des "Implicit Overloads for a ParamArray Parameter" dans Considérations sur les surcharges de procédures.

Pour surcharger une procédure qui accepte un nombre variable de paramètres

  1. Assurez-vous que la procédure et la logique du code appelant bénéficient davantage de versions surchargées que d'un paramètre ParamArray. Consultez des "Overloads and ParamArrays" dans Considérations sur les surcharges de procédures.

  2. Déterminez le nombre de valeurs fournies que la procédure doit accepter dans la partie variable de la liste de paramètres. Elle peut n'accepter aucune valeur, ou accepter un tableau unidimensionnel unique.

  3. Pour chaque nombre acceptable de valeurs fournies, écrivez une instruction de déclaration Sub ou Function qui définit la liste de paramètres correspondante. N'utilisez ni le mot clé Optional ni ParamArray dans la version surchargée.

  4. Dans chaque déclaration, précédez le mot clé Sub ou Function par le mot clé Overloads.

  5. Après chaque déclaration, écrivez le code de procédure à exécuter lorsque le code appelant fournit des valeurs correspondant à la liste de paramètres de cette déclaration.

  6. Terminez chaque procédure par l'instruction End Sub ou End Function, selon le cas.

Exemple

L'exemple suivant affiche une procédure définie avec un paramètre ParamArray, puis un jeu équivalent de procédures surchargées.

Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.

Vous ne pouvez pas surcharger une procédure avec une liste de paramètres qui accepte un tableau unidimensionnel comme tableau de paramètres. Toutefois, vous pouvez utiliser les signatures des autres surcharges implicites. Les déclarations suivantes illustrent ce principe.

' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)

Le code des versions surchargées ne doit pas tester si le code appelant a fourni des valeurs pour le paramètre ParamArray, ou dans le cas échéant, doit indiquer le nombre. Visual Basic passe le contrôle à la version correspondant à la liste d'arguments appelante.

Compilation du code

Comme une procédure avec un paramètre ParamArray est équivalente à un jeu de versions surchargées, vous ne pouvez pas la surcharger avec une liste de paramètres correspondant à chacune de ces surcharges implicites. Pour plus d'informations, consultez Considérations sur les surcharges de procédures.

Sécurité

Si vous travaillez dans un tableau dont la taille peut être indéfinie, vous risquez de saturer la capacité interne de votre application. Si vous acceptez un tableau de paramètres, vous devez tester la longueur du tableau passée par le code appelant et effectuer les étapes appropriées s'il est trop long pour votre application.

Voir aussi

Tâches

Procédures de dépannage

Comment : définir plusieurs versions d'une procédure

Comment : appeler une procédure surchargée

Comment : surcharger une procédure qui accepte des paramètres optionnels

Concepts

Procédures dans Visual Basic

Paramètres et arguments d'une procédure

Paramètres facultatifs

Tableaux de paramètres

Surcharge de procédure

Résolution de surcharge