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#.
Задание
СреднеСоздайте метод с названием convertGradeToPoints, который:
- Принимает буквенную оценку в качестве строкового параметра
- Преобразует её в числовой балл оценки, используя как подход с switch, так и с if-else
- Метод должен реализовать оба подхода и вернуть результат реализации switch
- Используйте следующие преобразования оценок:
- "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)
{
// Напишите свой код здесь
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
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