params (C#-Referenz)params (C# Reference)

Mithilfe des Schlüsselworts params kann ein Methodenparameter angegeben werden, der eine variable Anzahl von Argumenten akzeptiert.By using the params keyword, you can specify a method parameter that takes a variable number of arguments.

Sie können eine durch Trennzeichen getrennte Liste der Argumente des in der Parameterdeklaration angegebenen Typs oder ein Array der Argumente des angegebenen Typs senden.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. Sie können auch auf das Senden von Argumenten verzichten.You also can send no arguments. Wenn Sie keine Argumente senden, ist die Länge der params-Liste 0 (null).If you send no arguments, the length of the params list is zero.

Nach dem params-Schlüsselwort sind keine zusätzlichen Parameter in einer Methodendeklaration zugelassen. Gleichzeitig ist nur ein params-Schlüsselwort in einer Methodendeklaration zulässig.No additional parameters are permitted after the params keyword in a method declaration, and only one params keyword is permitted in a method declaration.

Der deklarierte Typ des params-Parameters muss wie im folgenden Beispiel gezeigt ein eindimensionales Array sein.The declared type of the params parameter must be a single-dimensional array, as the following example shows. Andernfalls tritt der Compilerfehler CS0225 ein.Otherwise, a compiler error CS0225 occurs.

BeispielExample

Im folgenden Beispiel werden verschiedene Methoden veranschaulicht, in denen Argumente an einen params-Parameter gesendet werden können.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[]
*/

C#-SprachspezifikationC# language specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation.For more information, see the C# Language Specification. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.The language specification is the definitive source for C# syntax and usage.

Siehe auchSee also