Menu
Coddy logo textTech

Das Schlüsselwort 'params'

Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 47 von 70.

Das Schlüsselwort params ermöglicht es einer Methode, eine variable Anzahl von Argumenten desselben Typs zu akzeptieren. Anstatt von den Aufrufern zu verlangen, manuell ein Array zu erstellen, können sie Argumente direkt übergeben, getrennt durch Kommas.

Platzieren Sie params vor einem Array-Parameter in der Methodensignatur:

public static int Sum(params int[] numbers)
{
    int total = 0;
    foreach (int n in numbers)
        total += n;
    return total;
}

// Alle diese Aufrufe funktionieren
Console.WriteLine(Sum(1, 2));           // 3
Console.WriteLine(Sum(1, 2, 3, 4, 5));  // 15
Console.WriteLine(Sum());               // 0 (leeres Array)

Der Compiler packt die Argumente automatisch in ein Array. Sie können auch direkt ein bestehendes Array übergeben, wenn Sie bereits eines haben:

int[] values = { 10, 20, 30 };
Console.WriteLine(Sum(values));  // 60

Es gibt ein paar Regeln zu beachten: Eine Methode kann nur einen params-Parameter haben, und dieser muss der letzte Parameter in der Liste sein. Sie können ihn mit regulären Parametern kombinieren:

public static void Log(string prefix, params object[] items)
{
    foreach (var item in items)
        Console.WriteLine(prefix + item);
}

Log("Item: ", "Apple", 42, true);

Das Schlüsselwort params macht APIs flexibler und benutzerfreundlicher, weshalb man es in Methoden wie Console.WriteLine und string.Format findet.

challenge icon

Aufgabe

Einfach

Erstellen wir einen flexiblen Nachrichtenformatierer, der das Schlüsselwort params verwendet, um eine beliebige Anzahl von Werten zu verarbeiten. Du erstellst eine Hilfsklasse, die Nachrichten mit variablen Argumenten formatieren kann, und zeigst dabei, wie params Methoden vielseitiger und benutzerfreundlicher für Aufrufer macht.

Du wirst deinen Code auf zwei Dateien aufteilen:

  • MessageFormatter.cs: Erstelle eine MessageFormatter-Klasse im Namespace Formatting mit zwei Methoden, die params verwenden:
    • Combine(params string[] parts) – fügt alle bereitgestellten Zeichenfolgen mit einem Leerzeichen dazwischen zusammen und gibt das Ergebnis zurück
    • FormatList(string label, params int[] numbers) – kombiniert einen regulären Parameter mit einem params-Array. Die Methode soll das Label gefolgt von einem Doppelpunkt und anschließend alle durch Kommas getrennten Zahlen zurückgeben (z. B. Scores: 85, 90, 78)
  • Program.cs: Zeige in deiner Hauptdatei beide Methoden mit Eingaben. Lies eine Label-Zeichenfolge und anschließend eine Zeile mit durch Kommas getrennten Ganzzahlen ein. Verwende Combine, um drei festgelegte Wörter zusammenzufügen, und FormatList, um das Label mit den Zahlen anzuzeigen.

Du erhältst zwei Eingaben:

  • Eine Label-Zeichenfolge (z. B. Scores)
  • Eine durch Kommas getrennte Liste von Ganzzahlen (z. B. 85,90,78,92)

Rufe zuerst Combine mit den Wörtern "Hello", "params" und "world!" auf und gib das Ergebnis aus. Analysiere dann die durch Kommas getrennten Ganzzahlen in ein Array und rufe FormatList mit dem Label und dem Ganzzahlen-Array auf. Gib auch dieses Ergebnis aus.

Wenn die Eingaben beispielsweise Scores und 85,90,78 lauten, sollte die Ausgabe wie folgt aussehen:

Hello params world!
Scores: 85, 90, 78

Beachte, wie Combine direkt eine beliebige Anzahl von Zeichenfolgen akzeptiert, während FormatList zeigt, dass du reguläre Parameter mit params kombinieren kannst – der params-Parameter muss lediglich an letzter Stelle stehen. Du kannst auch ein vorhandenes Array an eine params-Methode übergeben. Genau das wirst du mit den analysierten Ganzzahlen tun!

Probier es selbst

using System;
using Formatting;

class Program
{
    public static void Main(string[] args)
    {
        // Eingaben lesen
        string label = Console.ReadLine();
        string numbersInput = Console.ReadLine();
        
        // TODO: Verwende MessageFormatter.Combine mit "Hello", "params" und "world!"
        // und gib das Ergebnis aus
        
        
        // TODO: Parse die durch Kommas getrennten Ganzzahlen in ein int-Array
        // Hinweis: Teile den String auf und konvertiere jeden Teil in ein int
        
        
        // TODO: Verwende MessageFormatter.FormatList mit dem label und dem int-Array
        // und gib das Ergebnis aus
        
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C#-Compiler