Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
7 of 1492 menu
◀ ▶

Условие when

Ключевое слово when задаёт охрану для ветки case в операторе switch: сначала сравнивают значение с case, затем проверяют логическое выражение после when. Если охрана ложна, поиск продолжается; при полном промахе может сработать default.

Синтаксис

switch (выражение) { case значение when допУсловие: // код break; }

Пример

Давайте сработаем на case 1 when num > 0:

using System; class Program { static void Main() { int num = 1; switch (num) { case 1 when num > 0: Console.WriteLine("positive one"); break; default: Console.WriteLine("other"); break; } } }

Результат выполнения кода:

"positive one"

Пример

Давайте отсеем ветку, когда охрана when ложна:

using System; class Program { static void Main() { int num = 1; switch (num) { case 1 when num < 0: Console.WriteLine("never"); break; case 1 when num > 0: Console.WriteLine("positive one"); break; default: Console.WriteLine("other"); break; } } }

Результат выполнения кода:

"positive one"

Пример

Давайте проверим длину строки в охране when:

using System; class Program { static void Main() { string str = "abcde"; switch (str) { case "abcde" when str.Length == 5: Console.WriteLine("exact"); break; default: Console.WriteLine("other"); break; } } }

Результат выполнения кода:

"exact"

Пример

Давайте сравним число с порогом в двух охраняемых ветках:

using System; class Program { static void Main() { int num = 5; switch (num) { case var n when n > 10: Console.WriteLine("big"); break; case var n when n > 0: Console.WriteLine("small positive"); break; default: Console.WriteLine("other"); break; } } }

Результат выполнения кода:

"small positive"

Смотрите также

  • метка case,
    к которой добавляют охрану when
  • оператор switch,
    где применяют условные ветки
  • ветка default,
    которая принимает оставшиеся случаи
  • оператор if,
    который проверяет условие напрямую
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить