C# Programming

Strings in C#-Switch-Anweisungen meistern

Spread the love

Inhaltsverzeichnis

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 immer break-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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert