Vergleich: If vs. Switch
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 10 von 66.
C# bietet zwei grundlegende Möglichkeiten, mehrere Bedingungen zu behandeln: if-else-Anweisungen und switch-Anweisungen. Jede dieser Möglichkeiten hat in unterschiedlichen Szenarien ihre Stärken.
If-else-Anweisungen sind flexibel und können jede Art von Bedingung verarbeiten:
string grade = "B";
if (grade == "A")
{
Console.WriteLine("Excellent");
}
else if (grade == "B")
{
Console.WriteLine("Good");
}
else if (grade == "C")
{
Console.WriteLine("Satisfactory");
}
else
{
Console.WriteLine("Needs improvement");
}switch-Anweisungen sind übersichtlicher, wenn eine einzelne Variable mit mehreren konstanten Werten verglichen wird:
string grade = "B";
switch (grade)
{
case "A":
Console.WriteLine("Excellent");
break;
case "B":
Console.WriteLine("Good");
break;
case "C":
Console.WriteLine("Satisfactory");
break;
default:
Console.WriteLine("Needs improvement");
break;
}Switch kann mehrere case-Fälle zusammenfassen (Fall-through), sodass sie dasselbe Ergebnis verwenden. Schreibe die case-Labels direkt nacheinander, ohne Code dazwischen, und verwende nur ein break am Ende:
string grade = "B";
switch (grade)
{
case "A":
case "a":
Console.WriteLine("Excellent - 4 points");
break;
case "B":
case "b":
Console.WriteLine("Good - 3 points");
break;
case "C":
case "c":
Console.WriteLine("Satisfactory - 2 points");
break;
default:
Console.WriteLine("Needs improvement");
break;
}Hier fallen sowohl "B" als auch "b" in denselben Block und geben "Good - 3 points" aus. Dieses Muster ist nützlich, wenn Groß- und Kleinschreibung von Eingaben oder eine beliebige Gruppe von Werten dasselbe Ergebnis liefern soll.
switch kann auch Fälle mit unterschiedlichen Bezeichnungen gruppieren, die ein Ergebnis gemeinsam haben:
char dayCode = 'M';
switch (dayCode)
{
case 'M':
Console.WriteLine("Monday");
break;
case 'T':
Console.WriteLine("Tuesday or Thursday");
break;
case 'W':
Console.WriteLine("Wednesday");
break;
case 'F':
Console.WriteLine("Friday");
break;
default:
Console.WriteLine("Unknown day");
break;
}Aufgabe
MittelErstelle eine Methode namens convertGradeToPoints, die:
- Eine Buchstabennote als String-Parameter entgegennimmt
- Sie mithilfe von switch- und if-else-Ansätzen in eine numerische Notenpunktzahl umwandelt
- Beide Ansätze implementieren und das Ergebnis der switch-Implementierung zurückgeben soll
- Diese Notenumwandlungen verwendet:
- "A" oder "a" = 4
- "B" oder "b" = 3
- "C" oder "c" = 2
- "D" oder "d" = 1
- "F" oder "f" = 0
- Jede andere Eingabe = -1
Probier es selbst
public class ConvertGradeToPoints
{
// Implementiere die convertGradeToPoints-Methode
public static int convertGradeToPoints(string letterGrade)
{
// Schreibe deinen Code hier
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen 2D-Arrays2D-Arrays deklarieren und initialisierenAuf Elemente von 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysGezackte ArraysHäufige MatrixoperationenZusammenfassung – Mehrdimensionale Arrays4Techniken zur Ablaufsteuerung
Frühe RückgabenWächterklauselnSprunganweisungen (goto)Break und ContinueVerschachtelte Bedingungen abflachen7Logische Operatoren – Fortgeschritten
KurzschlussauswertungBedingte logische OperatorenOperatorrangfolgeRückblick – Erweiterte Operatoren2Fortgeschrittene Entscheidungslogik
Mehrere BedingungenKomplexe boolesche LogikVergleich: If vs. SwitchVerschachtelte Switch-AnweisungenRückblick – Fortgeschrittene Entscheidungen5Fehlerbehandlung mit Exceptions
Grundlagen von Try-CatchException-TypenMehrere Catch-BlöckeArbeiten mit DateienFinally-BlockUsing im Vergleich zu Try-FinallyBenutzerdefinierte ExceptionsZusammenfassung – Fehlerbehandlung3Schleifenverbesserungen
SchleifenleistungKomplexe IterationJeder SchleifentypSchleifen refaktorierenRückblick – Optimierte Schleifen6Behandlung von Nullwerten
Grundlagen von NullreferenzenNullable WerttypenMuster zur NullprüfungDefensive ProgrammierungZusammenfassung – NullsicherheitÜbe selbstständig: Online-C#-Compiler