Menu
Coddy logo textTech

Benannte Argumente

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

Benannte Argumente ermöglichen es Ihnen, anzugeben, welcher Parameter einen Wert erhält, indem Sie dessen Namen verwenden, anstatt sich auf die Position zu verlassen. Dies macht Methodenaufrufe übersichtlicher und ermöglicht es Ihnen, Argumente in beliebiger Reihenfolge zu übergeben.

Verwenden Sie den Parameternamen gefolgt von einem Doppelpunkt vor dem Wert:

public static void CreateUser(string name, int age, bool isActive)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

// Verwendung benannter Argumente
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob");  // Jede Reihenfolge funktioniert

Benannte Argumente glänzen besonders in Kombination mit optionalen Parametern. Anstatt alle vorangehenden optionalen Werte anzugeben, können Sie direkt zu dem springen, den Sie benötigen:

public static void Configure(string host, int port = 8080, bool useSSL = false, int timeout = 30)
{
    Console.WriteLine($"{host}:{port}, SSL: {useSSL}, Timeout: {timeout}");
}

// Port und useSSL überspringen, nur timeout angeben
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);

Sie können positionale und benannte Argumente mischen, aber positionale Argumente müssen zuerst kommen. Benannte Argumente verbessern die Lesbarkeit, insbesondere bei Methoden mit mehreren Parametern desselben Typs oder booleschen Flags, bei denen die Bedeutung nicht allein aus dem Wert ersichtlich ist.

challenge icon

Aufgabe

Einfach

Lassen Sie uns einen Berichtsgenerator erstellen, der die Vorteile von benannten Argumenten nutzt, um Methodenaufrufe glasklar zu gestalten. Wenn Methoden mehrere Parameter haben – insbesondere solche desselben Typs oder boolesche Flags – machen benannte Argumente Ihren Code selbstdokumentierend.

Sie werden Ihren Code über zwei Dateien hinweg organisieren:

  • ReportGenerator.cs: Erstellen Sie eine ReportGenerator-Klasse im Namespace Reports mit einer Methode, die mehrere optionale Parameter hat:
    • GenerateReport(string title, string author = "Anonymous", bool includeHeader = true, bool includeSummary = false, int maxPages = 10)
    • Diese Methode sollte einen formatierten String zurückgeben, der die Berichtskonfiguration beschreibt
    • Format: Report: {title} by {author} | Header: {Yes/No}, Summary: {Yes/No}, Max Pages: {maxPages}
  • Program.cs: Demonstrieren Sie in Ihrer Hauptdatei die Leistungsfähigkeit benannter Argumente, indem Sie GenerateReport auf verschiedene Arten aufrufen – überspringen Sie optionale Parameter, die Sie nicht benötigen, und geben Sie nur diejenigen an, die für den jeweiligen Bericht wichtig sind.

Sie erhalten drei Eingaben:

  • Titel des ersten Berichts
  • Titel des zweiten Berichts
  • Titel des dritten Berichts

Erstellen Sie drei Berichte mit unterschiedlichen Konfigurationen:

  1. Erster Bericht: Verwenden Sie nur den Titel (alle Standardwerte werden angewendet)
  2. Zweiter Bericht: Verwenden Sie den Titel mit includeSummary: true und maxPages: 25 (überspringen Sie author und includeHeader, wobei deren Standardwerte beibehalten werden)
  3. Dritter Bericht: Verwenden Sie den Titel mit author: "Admin", includeHeader: false und includeSummary: true (behalten Sie den Standardwert für maxPages bei)

Geben Sie jedes Berichtsergebnis in einer eigenen Zeile aus.

Wenn die Eingaben beispielsweise Sales Q1, Annual Review und Inventory Check sind, sollte die Ausgabe wie folgt aussehen:

Report: Sales Q1 by Anonymous | Header: Yes, Summary: No, Max Pages: 10
Report: Annual Review by Anonymous | Header: Yes, Summary: Yes, Max Pages: 25
Report: Inventory Check by Admin | Header: No, Summary: Yes, Max Pages: 10

Beachten Sie, wie Sie mit benannten Argumenten direkt zu den Parametern springen können, die Sie interessieren – Sie müssen author oder includeHeader nicht angeben, nur um includeSummary zu ändern. Dies macht Ihre Methodenaufrufe viel lesbarer und aussagekräftiger!

Spickzettel

Benannte Argumente ermöglichen es Ihnen, anzugeben, welcher Parameter einen Wert erhält, indem Sie dessen Namen verwenden, anstatt sich auf die Position zu verlassen. Dies macht Methodenaufrufe übersichtlicher und erlaubt es Ihnen, Argumente in beliebiger Reihenfolge zu übergeben.

Verwenden Sie den Parameternamen gefolgt von einem Doppelpunkt vor dem Wert:

public static void CreateUser(string name, int age, bool isActive)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

// Verwendung benannter Argumente
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob");  // Jede Reihenfolge funktioniert

Benannte Argumente funktionieren gut mit optionalen Parametern. Sie können direkt zu dem Parameter springen, den Sie benötigen, ohne alle vorangehenden optionalen Werte anzugeben:

public static void Configure(string host, int port = 8080, bool useSSL = false, int timeout = 30)
{
    Console.WriteLine($"{host}:{port}, SSL: {useSSL}, Timeout: {timeout}");
}

// Port und useSSL überspringen, nur timeout angeben
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);

Sie können positionale und benannte Argumente mischen, aber positionale Argumente müssen zuerst kommen. Benannte Argumente verbessern die Lesbarkeit, insbesondere bei Methoden mit mehreren Parametern desselben Typs oder booleschen Flags.

Probier es selbst

using System;
using Reports;

class Program
{
    public static void Main(string[] args)
    {
        // Lies die drei Berichtstitel ein
        string title1 = Console.ReadLine();
        string title2 = Console.ReadLine();
        string title3 = Console.ReadLine();

        // Erstelle eine ReportGenerator-Instanz
        ReportGenerator generator = new ReportGenerator();

        // TODO: Ersten Bericht generieren - nur den Titel verwenden (alle Standardwerte gelten)
        

        // TODO: Zweiten Bericht generieren - Titel mit includeSummary: true und maxPages: 25 verwenden
        // (author und includeHeader überspringen, deren Standardwerte beibehalten)
        

        // TODO: Dritten Bericht generieren - Titel mit author: "Admin", includeHeader: false und includeSummary: true verwenden
        // (Standardwert für maxPages beibehalten)
        

        // Jedes Berichtsergebnis ausgeben
    }
}
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