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

Erstelle ein Benachrichtigungssystem, das optionale Parameter verwendet, um eine flexible Nachrichtenformatierung bereitzustellen. Du erstellst eine Hilfsklasse, die Benachrichtigungen mit anpassbaren Einstellungen senden kann, wobei die meisten Aufrufer sinnvolle Standardwerte verwenden werden.

Du organisierst deinen Code auf zwei Dateien verteilt:

  • NotificationService.cs: Erstelle eine NotificationService-Klasse im Namespace Notifications mit einer Methode, die optionale Parameter demonstriert:
    • SendNotification(string message, string priority = "Normal", bool addTimestamp = true) – Diese Methode soll eine formatierte Benachrichtigungszeichenfolge zurückgeben. Wenn addTimestamp den Wert true hat, stelle der Nachricht [TIMESTAMP] voran. Das Format soll je nach Zeitstempeleinstellung [Priority] Message oder [TIMESTAMP] [Priority] Message lauten.
  • Program.cs: Demonstriere in deiner Hauptdatei, wie optionale Parameter funktionieren, indem du SendNotification auf drei verschiedene Arten aufrufst – mit Verwendung aller Standardwerte, mit Überschreiben eines Parameters und mit Überschreiben beider optionaler Parameter.

Du erhältst drei Eingaben:

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

Rufe SendNotification dreimal auf und gib jedes Ergebnis aus:

  1. Erster Aufruf: Übergib nur die erste Nachricht (verwendet die Standardwerte: Priorität "Normal", Zeitstempel aktiviert)
  2. Zweiter Aufruf: Übergib die zweite Nachricht mit der Priorität "Urgent" (der Zeitstempel ist weiterhin standardmäßig auf true gesetzt)
  3. Dritter Aufruf: Übergib 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

Beachte, wie dieselbe Methode alle drei Szenarien elegant verarbeitet – die Aufrufer geben nur an, was sie gegenüber den Standardwerten ändern möchten!

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

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