params (référence C#)

En utilisant le mot clé params vous pouvez spécifier un paramètre de méthode qui prend un nombre variable d'arguments.

Vous pouvez envoyer une liste d'arguments du type spécifié séparés par des virgules dans la déclaration de paramètre ou un tableau d'arguments du type spécifié. Vous pouvez également ne pas envoyer d'arguments. Si vous n'envoyez aucun argument, la longueur de la liste params est zéro.

Aucun paramètre supplémentaire n'est autorisé après le mot clé params dans une déclaration de méthode et un seul mot clé params est autorisé dans une telle déclaration.

Exemple

L'exemple suivant montre différents moyens d'envoyer des arguments à un paramètre params.

public class MyClass
{
    public static void UseParams(params int[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
    }

    public static void UseParams2(params object[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
    }

    static void Main()
    {
        // You can send a comma-separated list of arguments of the  
        // specified type.
        UseParams(1, 2, 3, 4);
        UseParams2(1, 'a', "test");

        // A params parameter accepts zero or more arguments. 
        // The following calling statement displays only a blank line.
        UseParams2();

        // An array argument can be passed, as long as the array 
        // type matches the parameter type of the method being called. 
        int[] myIntArray = { 5, 6, 7, 8, 9 };
        UseParams(myIntArray);

        object[] myObjArray = { 2, 'b', "test", "again" };
        UseParams2(myObjArray);

        // The following call causes a compiler error because the object 
        // array cannot be converted into an integer array. 
        //UseParams(myObjArray); 

        // The following call does not cause an error, but the entire  
        // integer array becomes the first element of the params array.
        UseParams2(myIntArray);
    }
}
/*
Output:
    1 2 3 4
    1 a test

    5 6 7 8 9
    2 b test again
    System.Int32[]
*/

Spécification du langage C#

Pour plus d'informations, voir la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi

Référence

Mots clés C#

Paramètres de méthode (référence C#)

Concepts

Guide de programmation C#

Autres ressources

Référence C#