Partager via


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

Si une procédure dispose d'un paramètre ParamArray (Visual Basic), 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 (Visual Basic).

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 (Visual Basic).

  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 (Visual Basic).

  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 (Visual Basic), 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 dans les versions surchargées n'a pas à tester si le code appelant a fourni une ou plusieurs valeurs pour le paramètre ParamArray, ou si tel est le cas, le nombre de valeurs. Visual Basic passe le contrôle à la version qui correspond à la liste d'arguments appelants.

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 (Visual Basic).

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 (Visual Basic)

Comment : définir plusieurs versions d'une procédure (Visual Basic)

Comment : appeler une procédure surchargée (Visual Basic)

Comment : surcharger une procédure qui accepte des paramètres optionnels (Visual Basic)

Concepts

Procédures dans Visual Basic

Paramètres et arguments d'une procédure (Visual Basic)

Paramètres facultatifs (Visual Basic)

Tableaux de paramètres (Visual Basic)

Surcharge de procédure (Visual Basic)

Résolution de surcharge (Visual Basic)