C# Language params


Ejemplo

params permite que un parámetro de método reciba un número variable de argumentos, es decir, se permiten cero, uno o varios argumentos para ese parámetro.

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

Ahora se puede llamar a este método con una lista típica de argumentos int , o una matriz de ints.

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

params deben aparecer como máximo una vez y, si se utilizan, deben estar en último lugar en la lista de argumentos, incluso si el tipo posterior es diferente al de la matriz.


Tenga cuidado al sobrecargar las funciones cuando use la palabra clave params . C # prefiere hacer coincidir sobrecargas más específicas antes de recurrir a tratar de usar sobrecargas con params . Por ejemplo si tienes dos métodos:

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

Luego, la sobrecarga específica de 2 argumentos tendrá prioridad antes de intentar la sobrecarga 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)