Принятие решений в C#: условные конструкции if, else, switch
Структуры принятия решений
Структуры принятия решений требуют от программиста указания одного или нескольких условий для оценки программой, вместе с операторами, выполняемыми при истинности условия, и опционально — операторами для ложности.
Типы операторов принятия решений в C#
| # | Оператор | Описание |
|---|---|---|
| 1 | if | Булево выражение, за которым следует один или более операторов |
| 2 | if...else | if с необязательным блоком else для ложного условия |
| 3 | Вложенные if | Один if или else if внутри другого |
| 4 | switch | Проверка переменной на равенство со списком значений |
| 5 | Вложенные switch | Один switch внутри другого |
Оператор if
if (условие)
{
// выполняется, если условие true
}
Оператор if...else
if (условие)
{
// true
}
else
{
// false
}
Цепочка if...else if...else
if (условие1)
{
// ...
}
else if (условие2)
{
// ...
}
else
{
// ни одно не истинно
}
Оператор switch
Позволяет проверить переменную на равенство списку констант (case labels).
switch (выражение)
{
case значение1:
// код
break;
case значение2:
// код
break;
default:
// если ни один case не совпал
break;
}
Важно: В C# каждый case должен заканчиваться break, return, throw или goto (нет неявного fall-through, как в C/C++). Можно группировать case: case 1: case 2: ...
Пример switch
int day = 3;
switch (day)
{
case 1: Console.WriteLine("Понедельник"); break;
case 2: Console.WriteLine("Вторник"); break;
case 3: Console.WriteLine("Среда"); break;
default: Console.WriteLine("Другой день"); break;
}
// Вывод: Среда
Switch-выражения (C# 8.0+)
Более лаконичный синтаксис для возврата значения:
string dayName = day switch
{
1 => "Понедельник",
2 => "Вторник",
3 => "Среда",
_ => "Неизвестно"
};
Pattern matching в switch (C# 7.0+)
object obj = "hello";
switch (obj)
{
case int i when i > 0:
Console.WriteLine($"Положительное число: {i}");
break;
case string s:
Console.WriteLine($"Строка длины {s.Length}");
break;
case null:
Console.WriteLine("Null");
break;
default:
Console.WriteLine("Другой тип");
break;
}
Оператор ? : (тернарный условный)
Может заменять простые if...else:
Exp1 ? Exp2 : Exp3;
Exp1— булево условиеExp2— значение, если trueExp3— значение, если false
Пример:
int a = 10, b = 20;
int max = (a > b) ? a : b; // max = 20
string result = (max % 2 == 0) ? "чётное" : "нечётное";
Вложенные операторы
Можно вкладывать if в if, switch в switch, и комбинировать их. Избегайте глубокой вложенности — используйте ранние возвраты (return), guard clauses или выносите логику в отдельные методы.
Язык C
- Освоение оператора switch в C#: синтаксис, примеры и лучшие практики
- Оператор break в C#: как и когда использовать
- Оператор continue в C#: как эффективно пропускать итерации циклов
- Освоение оператора break в C++
- Освоение оператора continue в C++: практические примеры и управление циклами
- Условные операторы в C: if, else и не только — подробное руководство
- Оператор pass в Python: практическое руководство
- Базовый синтаксис C: токены, идентификаторы, ключевые слова и пробелы
- Усиление принятия решений в передовитом производстве через мощную аналитику
- Оптимизация приёма данных для более умного принятия решений