Menu
Coddy logo textTech

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;
}
challenge icon

Aufgabe

Mittel

Erstelle eine Methode namens convertGradeToPoints, die:

  1. Eine Buchstabennote als String-Parameter entgegennimmt
  2. Sie mithilfe von switch- und if-else-Ansätzen in eine numerische Notenpunktzahl umwandelt
  3. Beide Ansätze implementieren und das Ergebnis der switch-Implementierung zurückgeben soll
  4. 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
        
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C#-Compiler