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: FalseStandardwerte 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.
Aufgabe
EinfachErstelle 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 eineNotificationService-Klasse im NamespaceNotificationsmit einer Methode, die optionale Parameter demonstriert:SendNotification(string message, string priority = "Normal", bool addTimestamp = true)– Diese Methode soll eine formatierte Benachrichtigungszeichenfolge zurückgeben. WennaddTimestampden Wert true hat, stelle der Nachricht[TIMESTAMP]voran. Das Format soll je nach Zeitstempeleinstellung[Priority] Messageoder[TIMESTAMP] [Priority] Messagelauten.
Program.cs: Demonstriere in deiner Hauptdatei, wie optionale Parameter funktionieren, indem duSendNotificationauf 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:
- Erster Aufruf: Übergib nur die erste Nachricht (verwendet die Standardwerte: Priorität
"Normal", Zeitstempel aktiviert) - Zweiter Aufruf: Übergib die zweite Nachricht mit der Priorität
"Urgent"(der Zeitstempel ist weiterhin standardmäßig auf true gesetzt) - Dritter Aufruf: Übergib die dritte Nachricht mit der Priorität
"Low"undfalsefü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 clearedBeachte, 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
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjektinitialisiererWiederholung – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbungs-(:)-SyntaxDas „base“-Schlüsselwort„virtual“- und „override“-SchlüsselwörterVersiegelte KlassenDie „object“-BasisklasseWiederholung – Mitarbeiterhierarchie7Erweiterte Funktionen
Überladen von OperatorenIndexer (this[])ToString()-ÜberschreibungErweiterungsmethodenRückblick – Benutzerdefinierte Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterThread-sicheres SingletonFactory-MusterObserver-Muster (Events)Strategy-Muster13Abschließende Herausforderungen
E-Learning-PlattformKomponente für SpielfigurenFahrzeugvermietungsdienst2Eigenschaften & statische Member
Automatisch implementierte EigenschaftenNur lesbare/schreibbare EigenschaftenStatische Felder & MethodenStatische KlassenMember mit Ausdruckskörpern5Polymorphie & Interfaces
Compile- vs. Laufzeit-PolymorphieInterface vs. abstrakte KlasseMehrere InterfacesExplizite InterfacesUpcasting & DowncastingWiederholung – Formenrechner3Klassenarchitektur
Instanz- vs. statische DatenSchlüsselwörter 'readonly' & 'const'Backing FieldsRückblick – Bankkontenverwaltung6Kapselung
ZugriffsmodifikatorenEigenschaften zur KapselungImplementierung der DatenkapselungMuster für UnveränderlichkeitRückblick – Schülerdaten9Variable Argumente
Das Schlüsselwort 'params'Optionale ParameterBenannte ArgumenteMethodenüberladungÜbe selbstständig: Online-C#-Compiler