Utilisation d'un nombre indéterminé de paramètres (C# et Java)

Mise à jour : novembre 2007

C# vous permet d'envoyer un nombre variable de paramètres à une méthode en spécifiant le mot clé params lorsque la méthode est déclarée. La liste d'arguments peut également contenir des paramètres normaux, mais notez que le paramètre déclaré avec le mot clé params doit arriver en dernier. Elle prend la forme d'un tableau de longueur variable, et il ne peut y avoir qu'un paramètre params par méthode.

Lorsque le compilateur essaie de résoudre un appel de méthode, il recherche une méthode dont la liste d'arguments correspond à la méthode appelée. Si aucune surcharge de méthode correspondant à la liste d'arguments n'est trouvée, et qu'il existe une version correspondante avec un paramètre params du type approprié, cette méthode est alors appelée, plaçant les arguments supplémentaires dans un tableau.

C'est ce que montre l'exemple suivant.

class TestParams
{
    private static void Average(string title, params int[] values)
    {
        int sum = 0;
        System.Console.Write("Average of {0} (", title);

        for (int i = 0; i < values.Length; i++)
        {
            sum += values[i];
            System.Console.Write(values[i] + ", ");
        }
        System.Console.WriteLine("): {0}", (float)sum/values.Length);
    }
    static void Main()
    {
        Average ("List One", 5, 10, 15);
        Average ("List Two", 5, 10, 15, 20, 25, 30);
    }
}

Dans l'exemple précédent, la méthode Average est déclarée avec un paramètre params de type tableau d'entiers, vous permettant de l'appeler avec n'importe quel nombre d'arguments. La sortie est présentée ici :

Average of List One (5, 10, 15, ): 10

Average of List Two (5, 10, 15, 20, 25, 30, ): 17.5

Vous pouvez spécifier un paramètre params de type Object si vous souhaitez autoriser des paramètres indéterminés de types différents.

Voir aussi

Concepts

Guide de programmation C#

Référence

Passage de tableaux en tant que paramètres (Guide de programmation C#)

Autres ressources

Langage de programmation C# pour les développeurs Java