Сравнение If и Switch
Часть раздела Логика и управление потоком путешествия по 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 одну за другой, не помещая между ними код, и используй только один break в конце:
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;
}Здесь и "B", и "b" переходят к одному и тому же блоку и выводят "Good - 3 points". Этот шаблон полезен, когда нужно, чтобы ввод в верхнем и нижнем регистре или любой набор значений давал один и тот же result.
Оператор switch также может группировать варианты с разными метками, которые имеют общий результат:
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;
}Задание
СреднеСоздайте method с именем convertGradeToPoints, который:
- Принимает буквенную grade в качестве параметра типа string
- Преобразует её в числовой балл grade, using подходы switch и if-else
- method должен реализовать оба подхода и вернуть result реализации switch
- Используйте следующие преобразования grade:
- "A" или "a" = 4
- "B" или "b" = 3
- "C" или "c" = 2
- "D" или "d" = 1
- "F" или "f" = 0
- Любой другой ввод = -1
Попробуйте сами
public class ConvertGradeToPoints
{
// Реализуйте метод convertGradeToPoints
public static int convertGradeToPoints(string letterGrade)
{
// Напишите ваш код здесь
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовОбъявление и инициализация 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиЗубчатые массивыОсновные операции с матрицамиПовторение — многомерные массивы4Методы управления потоком выполнения
Досрочный выходЗащитные условияОператоры перехода (goto)Break и ContinueУпрощение вложенных условных конструкций7Логические операторы: продвинутый уровень
Вычисление с коротким замыканиемУсловные логические операторыПриоритет операторовПовторение — продвинутые операторы2Продвинутое принятие решений
Множественные условияСложная логика BooleanСравнение If и SwitchВложенные конструкции SwitchПовторение — продвинутые решения5Обработка исключений
Основы Try-CatchТипы исключенийНесколько блоков CatchРабота с файламиБлок FinallyИспользование Using вместо Try-FinallyПользовательские исключенияПовторение — обработка ошибок3Улучшение циклов
Производительность цикловИтерация по сложным структурамКаждый тип циклаРефакторинг цикловПовторение — оптимизированные циклы6Обработка null
Основы ссылок на nullТипы значений, допускающие nullШаблоны проверки на nullЗащитное программированиеПовторение — безопасность при работе с nullПотренируйтесь самостоятельно: Онлайн-компилятор C#