If vs. Switch Comparison
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 10 von 66.
C# bietet zwei primäre Möglichkeiten, mehrere Bedingungen zu handhaben: if-else-Anweisungen und switch-Anweisungen. Jede hat ihre Stärken in unterschiedlichen Szenarien.
If-else-Anweisungen sind flexibel und können Bedingungen jeder Art behandeln:
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 gegen mehrere konstante Werte 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;
}Der Switch kann mehrere Fälle gruppieren, die dasselbe Ergebnis haben, indem Case-Labels gestapelt werden — dies wird fall-through genannt. Wenn mehrere Fälle keinen Code dazwischen haben, führen sie alle denselben Block aus:
char dayCode = 'S';
switch (dayCode)
{
case 'M':
case 'T':
case 'W':
case 'R':
case 'F':
Console.WriteLine("Weekday");
break;
case 'S':
case 'U':
Console.WriteLine("Weekend");
break;
default:
Console.WriteLine("Unknown day");
break;
}Hier fallen 'S' und 'U' beide durch zum gleichen Console.WriteLine("Weekend")-Aufruf. Das Stapeln leerer Case-Labels wie dies ist der Standardweg, um Fälle in C# zu gruppieren.
Aufgabe
MittelErstellen Sie eine Methode namens convertGradeToPoints, die:
- Eine Buchstaben-Note als String-Parameter entgegennimmt
- Sie zu einem numerischen Notenpunkt unter Verwendung beider switch- und if-else-Ansätze konvertiert
- Die Methode sollte beide Ansätze implementieren und das Ergebnis der switch-Implementierung zurückgeben
- Verwenden Sie diese Notenkonvertierungen:
- "A" oder "a" = 4
- "B" oder "b" = 3
- "C" oder "c" = 2
- "D" oder "d" = 1
- "F" oder "f" = 0
- Jede andere Eingabe = -1
Spickzettel
C# bietet zwei primäre Wege, um mehrere Bedingungen zu handhaben: if-else-Anweisungen und switch-Anweisungen.
If-else-Anweisungen sind flexibel und können jede Art von Bedingung handhaben:
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 sauberer, wenn eine einzelne Variable gegen mehrere konstante Werte 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-Anweisungen können mehrere Fälle gruppieren (fall-through), um dasselbe Ergebnis zu teilen, indem case-Labels gestapelt werden:
char dayCode = 'S';
switch (dayCode)
{
case 'M':
case 'T':
case 'W':
case 'F':
Console.WriteLine("Weekday");
break;
case 'S':
case 'U':
Console.WriteLine("Weekend");
break;
default:
Console.WriteLine("Unknown day");
break;
}Probier es selbst
public class ConvertGradeToPoints
{
// Implementieren Sie die convertGradeToPoints-Methode
public static int convertGradeToPoints(string letterGrade)
{
// Schreiben Sie Ihren 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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety