Utilizar un número indeterminado de parámetros (C# y Java)

Actualización: noviembre 2007

C# permite enviar a un método un número variable de parámetros mediante la especificación de la palabra clave params cuando se declara el método. La lista de argumentos también puede contener parámetros normales, pero se debe tener en cuenta que el parámetro declarado con la palabra clave params debe ir en último lugar. Toma la forma de una matriz de longitud variable y sólo puede haber un parámetro params por cada método.

Cuando el compilador intenta resolver una llamada al método, busca un método cuya lista de argumentos coincida con el método llamado. Si no se puede encontrar una sobrecarga de métodos que coincida con la lista de argumentos, pero hay una versión que coincide con un parámetro params del tipo apropiado, se llamará a ese método y los argumentos adicionales se colocarán en una matriz.

En el ejemplo siguiente se ilustra esta idea:

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

En el ejemplo anterior, el método Average se declara con un parámetro params de matriz de tipo integer, lo que permite llamarlo con cualquier número de argumentos. El resultado se muestra a continuación:

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

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

Se puede especificar un parámetro params de tipo Object si se desea permitir parámetros indeterminados de diferentes tipos.

Vea también

Conceptos

Guía de programación de C#

Referencia

Pasar matrices como parámetros (Guía de programación de C#)

Otros recursos

Lenguaje de programación C# para desarrolladores de Java