Inhaltsverzeichnis
- Switch-Anweisungen verstehen
- Strings in C#-Switch-Anweisungen verwenden
- Groß-/Kleinschreibung
- Switch-Ausdrücke für bessere Lesbarkeit
- Fazit
- Häufig gestellte Fragen
Switch-Anweisungen verstehen
Die switch
-Anweisung bietet eine strukturierte Möglichkeit, einen Codeblock zur Ausführung auszuwählen, basierend auf dem Wert eines Ausdrucks. Sie ist eine effizientere Alternative zu langen if-else if
-Ketten, wenn mehrere mögliche Werte behandelt werden müssen. Die grundlegende Syntax lautet:
switch (expression)
{
case value1:
// Code zur Ausführung, wenn expression == value1
break;
case value2:
// Code zur Ausführung, wenn expression == value2
break;
default:
// Code zur Ausführung, wenn kein Case übereinstimmt
break;
}
Die break
-Anweisung ist wichtig; sie verhindert ein „Durchfallen“ in nachfolgende Cases. Ohne sie setzt sich die Ausführung im nächsten Case fort, selbst wenn der aktuelle Case übereinstimmt.
Strings in C#-Switch-Anweisungen verwenden
Vor C# 8 erforderte die Verwendung von Strings in switch
-Anweisungen umständliche Workarounds. C# 8 führte Musterabgleich ein, der direkte Stringvergleiche innerhalb von switch
-Anweisungen ermöglicht und die Lesbarkeit und Wartbarkeit des Codes deutlich verbessert.
string day = "Monday";
switch (day)
{
case "Monday":
Console.WriteLine("Start der Arbeitswoche!");
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
Console.WriteLine("Mitten in der Arbeitswoche!");
break;
case "Friday":
Console.WriteLine("Fast Wochenende!");
break;
case "Saturday":
case "Sunday":
Console.WriteLine("Wochenende!");
break;
default:
Console.WriteLine("Ungültiger Tag eingegeben.");
break;
}
Dieses Beispiel zeigt, wie verschiedene Stringwerte effizient behandelt werden können. Beachten Sie die Möglichkeit, mehrere Cases ohne verschachtelte if
-Anweisungen zu gruppieren.
Groß-/Kleinschreibung
Stringvergleiche in C#’s switch
-Anweisungen sind Groß-/Kleinschreibung-sensitiv. Für Groß-/Kleinschreibung-unabhängige Vergleiche konvertieren Sie den String vor dem Vergleich in Kleinbuchstaben (oder Großbuchstaben):
string day = "monday";
switch (day.ToLower())
{
case "monday":
Console.WriteLine("Start der Arbeitswoche!");
break;
// ... andere Cases ...
}
Switch-Ausdrücke für bessere Lesbarkeit
C# 8 führte auch Switch-Ausdrücke ein, die eine kompaktere Syntax bieten. Das vorherige Beispiel wird zu:
string day = "Monday";
string message = day switch
{
"Monday" => "Start der Arbeitswoche!",
"Tuesday", "Wednesday", "Thursday" => "Mitten in der Arbeitswoche!",
"Friday" => "Fast Wochenende!",
"Saturday", "Sunday" => "Wochenende!",
_ => "Ungültiger Tag eingegeben."
};
Console.WriteLine(message);
Switch-Ausdrücke werden im Allgemeinen aufgrund ihrer Prägnanz und verbesserten Lesbarkeit bevorzugt, insbesondere bei zahlreichen Cases.
Fazit
Der Musterabgleich von C# 8 vereinfacht die Verwendung von Strings in switch
-Anweisungen und verbessert die Lesbarkeit und Wartbarkeit des Codes im Vergleich zu älteren if-else if
-Ansätzen. Denken Sie an die Groß-/Kleinschreibung und ziehen Sie die Verwendung von Switch-Ausdrücken für eleganteren Code in Betracht.
Häufig gestellte Fragen
- F: Gibt es Längenbeschränkungen für Strings in Switch-Anweisungen? A: Nein, es gibt keine inhärente Grenze. Sehr lange Strings können eine geringfügige Leistungseinbuße haben, aber das ist normalerweise unbedeutend.
- F: Was passiert, wenn ich die
break
-Anweisung weglassen? A: Es kommt zu einem Durchfallen; die Ausführung wird im nächsten Case fortgesetzt, was zu unerwartetem Verhalten führen kann. Verwenden Sie immerbreak
-Anweisungen (oder Switch-Ausdrücke). - F: Sind Switch-Ausdrücke immer schneller? A: Der Leistungsunterschied ist normalerweise vernachlässigbar. Priorisieren Sie Lesbarkeit und Wartbarkeit; Switch-Ausdrücke führen oft zu übersichtlicherem Code.