Partager via


Tableaux de paramètres (Visual Basic)

En règle générale, vous ne pouvez pas appeler une procédure avec un nombre d'arguments supérieur à celui de la déclaration de procédure.Lorsque vous avez besoin d'un nombre indéfini d'arguments, vous pouvez déclarer un tableau de paramètres, lequel permet à la procédure d'accepter un tableau de valeurs comme paramètre.Il n'est pas nécessaire de connaître le nombre d'éléments contenus dans le tableau de paramètres lorsque vous définissez la procédure.La taille du tableau est déterminée individuellement par chaque appel à la procédure.

Déclaration d'un ParamArray

Vous devez utiliser le mot clé ParamArray (Visual Basic) pour désigner un tableau de paramètres dans la liste des paramètres.Les règles suivantes s'appliquent :

  • Une procédure ne peut définir qu'un tableau de paramètres, qui doit représenter le dernier paramètre dans la définition de la procédure.

  • Le tableau de paramètres doit être passé par valeur.En programmation, il est conseillé d'inclure explicitement le mot clé Byval (Visual Basic) dans la définition de la procédure.

  • Le tableau de paramètres est automatiquement facultatif.Sa valeur par défaut est un tableau unidimensionnel vide dont le type d'élément est tableau de paramètres.

  • Tous les paramètres précédant le tableau de paramètres sont requis.Le tableau de paramètres doit être le seul paramètre facultatif.

Appel d'un ParamArray

Lorsque vous appelez une procédure qui définit un tableau de paramètres, vous pouvez fournir l'argument de l'une des manières suivantes:

  • Aucune valeur, ce qui signifie que vous pouvez omettre l'argument ParamArray (Visual Basic).Dans ce cas, un tableau vide est passé à la procédure.Vous pouvez également passer le mot clé Nothing (Visual Basic), qui produit le même effet.

  • Liste d'un nombre arbitraire d'arguments séparés par des virgules.Le type de données de chaque argument doit être implicitement convertible en type d'élément ParamArray.

  • Tableau avec le même type d'élément que celui du tableau de paramètres.

Dans tous les cas, le code de la procédure traite le tableau de paramètres comme un tableau unidimensionnel dont chaque élément est du même type de données que le type de données ParamArray.

Note de sécuritéNote de 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 taille du tableau auquel le code appelant est passé.Effectuez des étapes appropriées si le tableau est trop grand pour votre application.Pour plus d'informations, consultez Tableaux dans Visual Basic.

Exemple

l'exemple suivant définit et appelle la fonction calcSum.Le modificateur d' ParamArray pour le paramètre args permet à la fonction d'accepter un nombre variable d'arguments.

Module Module1

    Sub Main()
        ' In the following function call, calcSum's local variables 
        ' are assigned the following values: args(0) = 4, args(1) = 3, 
        ' and so on. The displayed sum is 10.
        Dim returnedValue As Double = calcSum(4, 3, 2, 1)
        Console.WriteLine("Sum: " & returnedValue)
        ' Parameter args accepts zero or more arguments. The sum 
        ' displayed by the following statements is 0.
        returnedValue = calcSum()
        Console.WriteLine("Sum: " & returnedValue)
    End Sub

    Public Function calcSum(ByVal ParamArray args() As Double) As Double
        calcSum = 0
        If args.Length <= 0 Then Exit Function
        For i As Integer = 0 To UBound(args, 1)
            calcSum += args(i)
        Next i
    End Function

End Module

L'exemple suivant définit une procédure avec un tableau de paramètres, et renvoie les valeurs de tous les éléments de tableau passés au tableau de paramètres.

Sub studentScores(ByVal name As String, ByVal ParamArray scores() As String)
    Debug.WriteLine("Scores for " & name & ":" & vbCrLf)
    ' Use UBound to determine largest subscript of the array.
    For i As Integer = 0 To UBound(scores, 1)
        Debug.WriteLine("Score " & i & ": " & scores(i))
    Next i
End Sub
Call studentScores("Anne", "10", "26", "32", "15", "22", "24", "16")
Call studentScores("Mary", "High", "Low", "Average", "High")
Dim JohnScores() As String = {"35", "Absent", "21", "30"}
Call studentScores("John", JohnScores)

Voir aussi

Référence

Optional (Visual Basic)

UBound

Concepts

Procédures dans Visual Basic

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

Passage d'un argument par valeur et par référence (Visual Basic)

Passage des arguments par position et par nom (Visual Basic)

Paramètres facultatifs (Visual Basic)

Surcharge de procédure (Visual Basic)

Autres ressources

Tableaux dans Visual Basic