Partager via


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

Si une procédure a un paramètre ParamArray , vous ne pouvez pas définir une version surchargée prenant un tableau unidimensionnel pour le tableau de paramètres. Pour plus d’informations, consultez « Surcharges implicites pour un paramètre ParamArray » dans Considérations relatives aux procédures de surcharge.

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

  1. Assurez-vous que la procédure et la logique d'appel de code bénéficient davantage de versions surchargées que d'un paramètre ParamArray. Consultez « Surcharges et ParamArrays » dans Considérations liées à la surcharge des procédures.

  2. Déterminez les nombres de valeurs fournies que la procédure doit accepter dans la partie variable de la liste de paramètres. Cela peut inclure le cas d’aucune valeur et peut inclure le cas d’un tableau unidimensionnel unique.

  3. Pour chaque nombre acceptable de valeurs fournies, écrivez une Sub instruction ou Function une instruction de déclaration qui définit la liste de paramètres correspondante. N’utilisez ni le mot clé Optional ni le mot clé ParamArray dans cette 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 qui doit s’exécuter lorsque le code appelant fournit des valeurs correspondant à la liste des paramètres de cette déclaration.

  6. Terminez chaque procédure avec l’instruction End Sub ou End Function le cas échéant.

Exemple :

L’exemple suivant montre une procédure définie avec un paramètre ParamArray , puis un ensemble é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 telle procédure avec une liste de paramètres qui prend un tableau unidimensionnel pour le tableau de paramètres. Toutefois, vous pouvez utiliser les signatures des autres surcharges implicites. Les déclarations suivantes illustrent cela.

' 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 besoin de tester si le code appelant a fourni une ou plusieurs valeurs pour le ParamArray paramètre, ou si c’est le cas, combien. Visual Basic passe le contrôle à la version correspondant à la liste des arguments appelants.

Compiler le code

Étant donné qu’une procédure avec un ParamArray paramètre équivaut à un ensemble de versions surchargées, vous ne pouvez pas surcharger une telle procédure avec une liste de paramètres correspondant à l’une de ces surcharges implicites. Pour en savoir plus, consultez Considérations liées à la surcharge des procédures.

Sécurité du .NET Framework

Chaque fois que vous traitez un tableau qui peut être indéfiniment volumineux, il existe un risque de dépasser une limite interne de votre application. Si vous acceptez un tableau de paramètres, vous devez tester la longueur du tableau passé au code appelant et prendre les mesures appropriées si elle est trop volumineuse pour votre application.

Voir aussi