Menu
Coddy logo textTech

Optionale Parameter

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

Optionale Parameter ermöglichen es Ihnen, Standardwerte für Methodenparameter zu definieren. Wenn ein Aufrufer keinen Wert für diesen Parameter angibt, wird automatisch der Standardwert verwendet.

Sie erstellen einen optionalen Parameter, indem Sie in der Methodensignatur einen Standardwert zuweisen:

public static void Greet(string name, string greeting = "Hello")
{
    Console.WriteLine(greeting + ", " + name + "!");
}

// Beide Aufrufe funktionieren
Greet("Alice");              // Hello, Alice!
Greet("Bob", "Welcome");     // Welcome, Bob!

Optionale Parameter müssen nach allen erforderlichen Parametern stehen. Sie können mehrere optionale Parameter definieren, und Aufrufer können beliebige Parameter von rechts weglassen:

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

CreateUser("Emma");                    // Emma, Age: 0, Active: True
CreateUser("James", 25);               // James, Age: 25, Active: True
CreateUser("Sarah", 30, false);        // Sarah, Age: 30, Active: False

Standardwerte müssen Kompilierzeit-Konstanten sein – Literale, const-Werte oder default-Ausdrücke. Sie können keine Variablen oder Methodenaufrufe als Standardwerte verwenden. Dies macht optionale Parameter ideal für Konfigurationseinstellungen und Methoden, bei denen die meisten Aufrufer gängige Werte verwenden.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein Benachrichtigungssystem bauen, das optionale Parameter verwendet, um eine flexible Nachrichtenformatierung zu ermöglichen. Sie werden eine Hilfsklasse erstellen, die Benachrichtigungen mit anpassbaren Einstellungen senden kann, wobei die meisten Aufrufer sinnvolle Standardwerte verwenden werden.

Sie werden Ihren Code auf zwei Dateien aufteilen:

  • NotificationService.cs: Erstellen Sie eine Klasse NotificationService im Namespace Notifications mit einer Methode, die optionale Parameter demonstriert:
    • SendNotification(string message, string priority = "Normal", bool addTimestamp = true) – Diese Methode sollte einen formatierten Benachrichtigungs-String zurückgeben. Wenn addTimestamp true ist, stellen Sie der Nachricht [TIMESTAMP] voran. Das Format sollte sein: [Priority] Message oder [TIMESTAMP] [Priority] Message, abhängig von der Zeitstempeleinstellung.
  • Program.cs: Demonstrieren Sie in Ihrer Hauptdatei, wie optionale Parameter funktionieren, indem Sie SendNotification auf drei verschiedene Arten aufrufen – unter Verwendung aller Standardwerte, durch Überschreiben eines Parameters und durch Überschreiben beider optionalen Parameter.

Sie erhalten drei Eingaben:

  • Erste Nachricht (verwendet alle Standardwerte)
  • Zweite Nachricht (verwendet die Priorität "Urgent" mit Standard-Zeitstempel)
  • Dritte Nachricht (verwendet die Priorität "Low" und keinen Zeitstempel)

Rufen Sie SendNotification dreimal auf und geben Sie jedes Ergebnis aus:

  1. Erster Aufruf: Übergeben Sie nur die erste Nachricht (verwendet Standardwerte: "Normal" Priorität, Zeitstempel aktiviert)
  2. Zweiter Aufruf: Übergeben Sie die zweite Nachricht mit der Priorität "Urgent" (Zeitstempel bleibt standardmäßig auf true)
  3. Dritter Aufruf: Übergeben Sie die dritte Nachricht mit der Priorität "Low" und false für den Zeitstempel

Wenn die Eingaben beispielsweise System started, Server overload und Cache cleared lauten, sollte die Ausgabe wie folgt aussehen:

[TIMESTAMP] [Normal] System started
[TIMESTAMP] [Urgent] Server overload
[Low] Cache cleared

Beachten Sie, wie dieselbe Methode alle drei Szenarien elegant handhabt – Aufrufer geben nur das an, was sie gegenüber den Standardwerten ändern müssen!

Spickzettel

Optionale Parameter ermöglichen es Ihnen, Standardwerte für Methodenparameter zu definieren. Wenn ein Aufrufer keinen Wert angibt, wird automatisch der Standardwert verwendet.

Erstellen Sie einen optionalen Parameter, indem Sie in der Methodensignatur einen Standardwert zuweisen:

public static void Greet(string name, string greeting = "Hello")
{
    Console.WriteLine(greeting + ", " + name + "!");
}

// Beide Aufrufe funktionieren
Greet("Alice");              // Hello, Alice!
Greet("Bob", "Welcome");     // Welcome, Bob!

Optionale Parameter müssen nach allen erforderlichen Parametern stehen. Sie können mehrere optionale Parameter haben:

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

CreateUser("Emma");                    // Emma, Age: 0, Active: True
CreateUser("James", 25);               // James, Age: 25, Active: True
CreateUser("Sarah", 30, false);        // Sarah, Age: 30, Active: False

Standardwerte müssen Kompilierzeit-Konstanten sein – Literale, const-Werte oder default-Ausdrücke. Sie können keine Variablen oder Methodenaufrufe als Standardwerte verwenden.

Probier es selbst

using System;
using Notifications;

class Program
{
    public static void Main(string[] args)
    {
        // Lies die drei Nachrichten
        string message1 = Console.ReadLine();
        string message2 = Console.ReadLine();
        string message3 = Console.ReadLine();

        // Erstelle eine Instanz von NotificationService
        NotificationService service = new NotificationService();

        // TODO: Rufe SendNotification dreimal auf und gib jedes Ergebnis aus:
        // 1. Erster Aufruf: Übergib nur message1 (verwendet alle Standardwerte)
        // 2. Zweiter Aufruf: Übergib message2 mit der Priorität "Urgent" (timestamp ist standardmäßig true)
        // 3. Dritter Aufruf: Übergib message3 mit der Priorität "Low" und false für timestamp

    }
}
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