C# Language params


Exemple

params permet à un paramètre de méthode de recevoir un nombre variable d'arguments, c'est-à-dire zéro, un ou plusieurs arguments sont autorisés pour ce paramètre.

static int AddAll(params int[] numbers)
{
    int total = 0;
    foreach (int number in numbers)
    {
        total += number;
    }
    
    return total;
}

Cette méthode peut maintenant être appelée avec une liste typique d'arguments int , ou un tableau d'ints.

AddAll(5, 10, 15, 20);                // 50
AddAll(new int[] { 5, 10, 15, 20 });  // 50

params doivent apparaître au plus une fois et, s'ils sont utilisés, ils doivent être en dernier dans la liste des arguments, même si le type suivant est différent de celui du tableau.


Soyez prudent lorsque vous surchargez les fonctions lorsque vous utilisez le mot-clé params . C # préfère faire correspondre les surcharges plus spécifiques avant de tenter d'utiliser des surcharges avec des params . Par exemple si vous avez deux méthodes:

static double Add(params double[] numbers)
{
    Console.WriteLine("Add with array of doubles");
    double total = 0.0;
    foreach (double number in numbers)
    {
        total += number;
    }
    
    return total;
}

static int Add(int a, int b)
{
    Console.WriteLine("Add with 2 ints");
    return a + b;
}

Ensuite, la surcharge de 2 arguments spécifique aura la priorité avant d'essayer la surcharge de params .

Add(2, 3);      //prints "Add with 2 ints"
Add(2, 3.0);    //prints "Add with array of doubles" (doubles are not ints)
Add(2, 3, 4);   //prints "Add with array of doubles" (no 3 argument overload)