C# Switch Case (mit Codebeispielen)

    Avatarbild von Patrick
    Patrick

    veröffentlicht am: 28.05.2020
    zuletzt aktualisiert am: 07.02.2023

    Die C# switch-case Anweisung im Überblick

    Im Regelfall ist die Ausführung von Quellcode von bestimmten Variablen abhängig. Es gibt verschiedene Wege um die Werte von Variablen zu überprüfen. Neben if und else stellt uns C# dafür noch switch und case zur Verfügung, die ich dir Heute in diesem Artikel vorstellen möchte.

    Einfacher C# switch-case-Block

    Einfache Anwendung

    Am Einfachsten lässt sich so ein Block erstellen, indem du an dem C# switch Statement eine Variable übergibst und mit C# case festlegst, welcher Code bei welchem Wert der Variablen ausgeführt werden soll.

    int i = 0;
    switch(i) {
        case 0:
            Console.WriteLine("i ist 0");
            break;
    }
    // i ist 0

    Du kannst case natürlich auch mehrmals im selben switch verwenden. Zu beachten hierbei ist lediglich, dass jeder case mit einem break, return oder goto beendet werden muss. break beendet nur die Ausführung des Codeblocks, mit return kannst du einen Wert zurückgeben und goto lässt dich zu einem anderen case springen. Zu goto kannst du im dritten Abschnitt des Artikels mehr lesen.

    int i = 1;
    switch(i) {
        case 0:
            Console.WriteLine("i ist 0");
            break;
        case 1:
            Console.WriteLine("i ist 1");
            break;
    }
    // i ist 1

    Wenn du nach einem case noch einen case angibst ohne dazwischen Code anzugeben, wird für beide Fälle der selbe Code ausgeführt.

    int i = 0;
    switch (i) {
        case 0:
        case 1:
            Console.WriteLine("i ist 0 oder 1");
            break;
    }
    // i ist 0 oder 1

    Standardanweisungen mit default realisieren

    Mit default kannst du festlegen, was passieren soll, wenn keine der Bedingungen in case zutrifft.

    int i = 2;
    switch(i) {
        case 0:
        case 1:
            Console.WriteLine("i ist 0 oder 1");
            break;
        default:
            Console.WriteLine("i ist weder 0 noch 1");
            break;
    }
    // i ist weder 0 noch 1

    Zusätzliche Bedingungen mit when

    when lässt dich unter Anderem eine zusätzliche Bedingung festlegen. Im folgenden Beispiel ist case 1 doppelt vertreten, jedoch mit unterschiedlicher when Bedingung.

    int wert = 1;
    int zweiter_wert= 2;
    switch (wert) {
        case 1 when zweiter_wert == 1:
            Console.WriteLine("Eins");
            break;
        case 1 when zweiter_wert == 2:
            Console.WriteLine("Eins und Zwei");
            break;
        case 2:
            Console.WriteLine("Zwei");
    }
    // Eins und Zwei

    Du kannst mit when Bedingungen in case freier formulieren. Hier wird ein numerischer Wert darauf überprüft, ob er über 50, unter 25 oder zwischen den beiden liegt.

    int i = 42;
    switch (i) {
        case int n when (n >= 50):
            Console.WriteLine($"n ist 50 oder höher: {n}");
            break;
        case int n when (n < 50 && n >= 25):
             Console.WriteLine($"n ist zwischen 50 und 25: {n}");
             break;
        case int n when (n < 25):
            Console.WriteLine($"n ist weniger als 25: {n}");
            break;
    }
    // n ist zwischen 50 und 25: 42

    Die Nutzung von switch in Kombination mit Enumeration / Enum

    Um zu demonstrieren, wie man switch C# mit enum verwenden kann, benutzen wir das folgende enum für das darauffolgende Beispiel.

    public enum Ort {
        Berlin,
        München,
        Leipzig
    }
    Ort ort = Ort.Leipzig;
    switch (ort) {
        case Ort.Berlin:
            Console.WriteLine("Ort: Berlin");
            break;
        case Ort.München:
            Console.WriteLine("Ort: München");
            break;
        case Ort.Leipzig:
            Console.WriteLine("Ort: Leipzig");
            break;
        default:
            Console.WriteLine("Unbekannt");
            break;
    }
    // Ort: Leipzig

    Da enums ebenfalls numerische Werte haben, ist dies recht einfach. Wenn du mehr darüber erfahren möchtest, kannst du gerne unseren Artikel Alles über das C# Enum dazu lesen.

    Das goto im C# switch-case

    Mit goto kannst du einen bestimmten case oder den default Block angeben und ausführen lassen.

    int code = 404;
    switch (code) {
        case 404:
            Console.WriteLine("404 - nicht gefunden");
            goto default;
        default:
            Console.WriteLine("unbekannt");
            break;
    }
    // 404 - nicht gefunden
    // unbekannt

    Allerdings kann die Verwendung von goto schnell zu unübersichtlichem Code führen und ist daher mit Vorsicht zu verwenden, wenn überhaupt. Das folgende Beispiel erzeugt eine Endlosschleife mit goto. Bitte nicht nachmachen.

    switch (code) {
        case 200:
            Console.WriteLine("200 - Hi");
            goto case 404;
        case 404:
            Console.WriteLine("404 – nicht gefunden");
            goto case 200;
    }
    404 - nicht gefunden
    200 - Hi
    404 - nicht gefunden
    200 - Hi
    404 - nicht gefunden
    200 - Hi
    ...

    Fazit – switch-case C#

    Das C# switch case ist praktisch, um für verschiedene Fälle entscheiden zu können, was für Code ausgeführt werden soll. Allerdings können solche Blöcke auch schnell groß und unübersichtlich werden und in einer Endlosschleife enden.

    Hast du noch Fragen? Auch Lob und Verbesserungsvorschläge sind in den Kommentaren gerne gesehen!

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Python, Java & SQL und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."

    - Lennart Sparbier

    100% kostenlos registrieren · keine Kreditkarte notwendig

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig