C# Language params


Esempio

params consente a un parametro del metodo di ricevere un numero variabile di argomenti, vale a dire zero, uno o più argomenti sono consentiti per quel parametro.

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

Questo metodo può ora essere chiamato con una lista tipica di argomenti int , o una matrice di interi.

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

params deve apparire al massimo una volta e se usato, deve essere l' ultimo nella lista degli argomenti, anche se il tipo successivo è diverso da quello dell'array.


Fare attenzione quando si sovraccaricano le funzioni quando si utilizza la parola chiave params . C # preferisce abbinare sovraccarichi più specifici prima di ricorrere al tentativo di usare sovraccarichi con params . Ad esempio se hai due metodi:

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;
}

Quindi lo specifico sovraccarico di 2 argomenti avrà la precedenza prima di provare il sovraccarico dei 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)