veröffentlicht am: 28.05.2020 zuletzt aktualisiert am: 07.02.2023
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.
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
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
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
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.
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 ...
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.
"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
Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.
100% kostenlos registrieren · keine Zahlungsdaten notwendig