Variadische Parameter in C# mit .NET 9: Einführung und Neuerungen
Einführung in Variadische Parameter
Variadische Parameter ermöglichen es, Methoden zu definieren, die eine beliebige Anzahl von Argumenten eines bestimmten Typs akzeptieren. In C# wird dies mit dem params
-Schlüsselwort realisiert. Die übergebenen Werte werden innerhalb der Methode als Array behandelt.
Beispiel: Summe von Zahlen mit params
public class VariadischeParameter()
{
public void AddNumbers(params int[] numbers)
{
int sum = 0;
foreach (int number in numbers)
{
sum += number;
}
Console.WriteLine($"Summe: {sum}");
}
}
Aufruf der Methode:
VariadischeParameter variadischeParameter = new VariadischeParameter();
variadischeParameter.AddNumbers(1, 2, 3, 4, 5);
variadischeParameter.AddNumbers(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Variadische Parameter mit Objekten
Auch komplexe Objekte können als variadische Parameter genutzt werden. Im folgenden Beispiel übergeben wir mehrere Person
-Objekte:
public record Person(string Name, int Age);
public static void PrintPeople(params Person[] people)
{
foreach (var person in people)
{
Console.WriteLine($"Name: {person.Name}, Alter: {person.Age}");
}
}
Aufruf der Methode:
PrintPeople(
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Charlie", 35)
);
Neuerungen in .NET 9: Generische Mengentypen
Mit .NET 9 wurde die Unterstützung für generische Mengentypen bei variadischen Parametern eingeführt. Dadurch können Methoden eine variable Anzahl von Argumenten beliebigen Typs akzeptieren, ohne dass diese auf object
reduziert werden müssen.
Beispiel: Generische Variadische Parameter in .NET 9
public static void PrintValues<T>(params T[] values)
{
foreach (var value in values)
{
Console.WriteLine(value);
}
}
Aufruf der Methode mit verschiedenen Typen:
PrintValues("Hallo", "Welt", "C#");
PrintValues(1, 2, 3, 4);
PrintValues(new Person("Alice", 30), new Person("Bob", 25));
Fazit
Die Neuerungen in .NET 9 machen variadische Parameter noch flexibler, da nun generische Mengentypen unterstützt werden. Dies verbessert die Typsicherheit und vereinfacht den Code, indem manuelle Umwandlungen entfallen.