Menu
Coddy logo textTech

Porównanie if i switch

Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 10 z 66.

C# oferuje dwa podstawowe sposoby obsługi wielu warunków: instrukcje if-else i instrukcje switch. Każdy z nich ma swoje zalety w różnych sytuacjach.

Instrukcje if-else są elastyczne i mogą obsługiwać dowolny typ warunku:

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");
}

Instrukcje switch są czytelniejsze, gdy porównujesz jedną zmienną z wieloma stałymi wartościami:

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

Instrukcja switch może grupować wiele przypadków (przechodzenie dalej), tak aby miały ten sam wynik. Umieść etykiety case jedna po drugiej, bez kodu między nimi, i dodaj tylko jedną instrukcję break na końcu:

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

Tutaj zarówno "B", jak i "b" przechodzą do tego samego bloku i wypisują "Good - 3 points". Ten wzorzec jest przydatny, gdy chcesz, aby wielkie i małe litery lub dowolny zestaw wartości dawały ten sam wynik.

Instrukcja switch może również grupować przypadki z różnymi etykietami, które mają ten sam rezultat:

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

Wyzwanie

Średni

Utwórz metodę o nazwie convertGradeToPoints, która:

  1. Przyjmuje ocenę literową jako parametr typu string
  2. Konwertuje ją na numeryczną wartość punktową, używając zarówno podejścia switch, jak i if-else
  3. Metoda powinna implementować oba podejścia i zwracać wynik implementacji switch
  4. Użyj następujących przeliczeń ocen:
    • "A" lub "a" = 4
    • "B" lub "b" = 3
    • "C" lub "c" = 2
    • "D" lub "d" = 1
    • "F" lub "f" = 0
    • Każda inna wartość wejściowa = -1

Spróbuj swoich sił

public class ConvertGradeToPoints
{
    // Zaimplementuj metodę convertGradeToPoints
    public static int convertGradeToPoints(string letterGrade)
    {
        // Wpisz tutaj swój kod
        
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C# online