Menu
Coddy logo textTech

If vs. Switch Comparison

Часть раздела Логика и управление потоком путешествия по C# на Coddy — урок 10 из 66.

C# предоставляет два основных способа обработки нескольких условий: операторы if-else и операторы switch. Каждый из них имеет свои преимущества в разных сценариях.

Операторы if-else гибкие и могут обрабатывать любой тип условия:

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 выглядят чище при сравнении одной переменной с несколькими константными значениями:

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 может группировать несколько случаев, имеющих одинаковый результат, путем последовательного размещения меток case вместе — это называется fall-through. Когда несколько случаев не имеют кода между ними, они все выполняют один и тот же блок:

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

Здесь 'S' и 'U' оба проваливаются к одному и тому же вызову Console.WriteLine("Weekend"). Такое размещение пустых меток case является стандартным способом группировки случаев в C#.

challenge icon

Задание

Средне

Создайте метод с названием convertGradeToPoints, который:

  1. Принимает буквенную оценку в качестве строкового параметра
  2. Преобразует её в числовой балл оценки, используя как подход с switch, так и с if-else
  3. Метод должен реализовать оба подхода и вернуть результат реализации switch
  4. Используйте следующие преобразования оценок:
    • "A" или "a" = 4
    • "B" или "b" = 3
    • "C" или "c" = 2
    • "D" или "d" = 1
    • "F" или "f" = 0
    • Любой другой ввод = -1

Шпаргалка

C# предоставляет два основных способа обработки множественных условий: операторы if-else и операторы switch.

Операторы if-else гибкие и могут обрабатывать любой тип условия:

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 более чистые при сравнении одной переменной с несколькими постоянными значениями:

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 могут группировать несколько case (fall-through) для общего результата путем последовательного размещения меток case:

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

Попробуйте сами

public class ConvertGradeToPoints
{
    // Реализуйте метод convertGradeToPoints
    public static int convertGradeToPoints(string letterGrade)
    {
        // Напишите свой код здесь
        
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком