params (Referencia de C#)params (C# Reference)

Mediante el uso de la palabra clave params, puede especificar un parámetro de método que toma un número variable de argumentos.By using the params keyword, you can specify a method parameter that takes a variable number of arguments.

Puede enviar una lista separada por comas de argumentos del tipo especificado en la declaración de parámetro o una matriz de argumentos del tipo especificado.You can send a comma-separated list of arguments of the type specified in the parameter declaration or an array of arguments of the specified type. También puede no enviar ningún argumento.You also can send no arguments. Si no envía ningún argumento, la longitud de la lista params es cero.If you send no arguments, the length of the params list is zero.

No se permiten parámetros adicionales después de la palabra clave params en una declaración de método, y solo se permite una palabra clave params en una declaración de método.No additional parameters are permitted after the params keyword in a method declaration, and only one params keyword is permitted in a method declaration.

El tipo declarado del parámetro params debe ser una matriz unidimensional, como se muestra en el ejemplo siguiente.The declared type of the params parameter must be a single-dimensional array, as the following example shows. En caso contrario, se produce un error del compilador CS0225.Otherwise, a compiler error CS0225 occurs.

EjemploExample

En el ejemplo siguiente se muestran varias maneras de enviar argumentos a un parámetro params.The following example demonstrates various ways in which arguments can be sent to a params parameter.

public class MyClass
{
    public static void UseParams(params int[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
    }

    public static void UseParams2(params object[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
    }

    static void Main()
    {
        // You can send a comma-separated list of arguments of the 
        // specified type.
        UseParams(1, 2, 3, 4);
        UseParams2(1, 'a', "test");

        // A params parameter accepts zero or more arguments.
        // The following calling statement displays only a blank line.
        UseParams2();

        // An array argument can be passed, as long as the array
        // type matches the parameter type of the method being called.
        int[] myIntArray = { 5, 6, 7, 8, 9 };
        UseParams(myIntArray);

        object[] myObjArray = { 2, 'b', "test", "again" };
        UseParams2(myObjArray);

        // The following call causes a compiler error because the object
        // array cannot be converted into an integer array.
        //UseParams(myObjArray);

        // The following call does not cause an error, but the entire 
        // integer array becomes the first element of the params array.
        UseParams2(myIntArray);
    }
}
/*
Output:
    1 2 3 4
    1 a test
           
    5 6 7 8 9
    2 b test again
    System.Int32[]
*/

Especificación del lenguaje C#C# language specification

Para obtener más información, consulte la Especificación del lenguaje C#.For more information, see the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee also