Verwenden einer unbestimmten Anzahl von Parametern (C# und Java im Vergleich)
Aktualisiert: November 2007
Mit C# können Sie eine unterschiedliche Anzahl von Parametern an eine Methode senden. Dazu legen Sie beim Deklarieren der Methode das params-Schlüsselwort fest. Die Argumentliste kann auch reguläre Parameter enthalten. Beachten Sie jedoch, dass der mit dem params-Schlüsselwort deklarierte Parameter der Letzte sein muss. Er hat das Format eines Arrays mit variabler Länge. Es kann nur einen params-Parameter pro Methode geben.
Wenn der Compiler versucht, einen Methodenaufruf aufzulösen, sucht er nach einer Methode, deren Argumentliste mit der aufgerufenen Methode übereinstimmt. Wenn keine Methodenüberladung gefunden werden kann, die mit der Argumentliste übereinstimmt, es aber eine passende Version mit einem params-Parameter des entsprechenden Typs gibt, wird diese Methode aufgerufen. Die zusätzlichen Argumente werden dann in ein Array eingefügt.
Im folgenden Beispiel wird dies veranschaulicht:
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);
}
}
Im vorherigen Beispiel wird die Average-Methode mit einem params-Parameter vom Typ ganzzahliges Array deklariert. Dadurch können Sie sie mit einer beliebigen Anzahl von Argumenten aufrufen. Die Ausgabe wird hier gezeigt:
Average of List One (5, 10, 15, ): 10
Average of List Two (5, 10, 15, 20, 25, 30, ): 17.5
Sie können einen params-Parameter des Object-Typs angeben, wenn Sie unbestimmte Parameter anderer Typen zulassen möchten.
Siehe auch
Konzepte
Referenz
Übergeben von Arrays als Parameter (C#-Programmierhandbuch)