Partage via


Comment : surcharger une procédure qui accepte 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 utilisant un tableau unidimensionnel pour le tableau de paramètres. Pour plus d’informations, consultez « Surcharges implicites pour un paramètre ParamArray » dans Considérations sur les surcharges de procédures.

Surcharger une procédure qui accepte un nombre indéfini de paramètres

  1. Vérifiez que la procédure et la logique de code appelant bénéficient de versions surchargées plus que d’un paramètre ParamArray. Consultez « Surcharges et ParamArrays » dans Considérations sur les surcharges de procédures.

  2. Déterminez le nombre de valeurs fournies devant être acceptées par la procédure dans la partie variable de la liste de paramètres. Cela peut inclure le cas d’absence de valeur et le cas d’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 pas le Optional ou le mot clé ParamArray dans cette version surchargée.

  4. Dans chaque déclaration, faites précéder 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 utilise 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 paramètre ParamArray, 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 paramètre ParamArray é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 plus d’informations, consultez Considérations sur les surcharges de procédure.

Sécurité du .NET Framework

Chaque fois que vous traitez avec un tableau qui peut être indéfiniment volumineux, il existe un risque de dépassement d’une capacité interne de votre application. Si vous acceptez un tableau de paramètres, vous devez tester la longueur du tableau que le code appelant lui a passé et prendre les mesures appropriées s’il est trop volumineux pour votre application.

Voir aussi