Треки
/
C#
C#
/
Салабус
/
Конструкція `switch`
Ко

Конструкція `switch` у C#

2 вправи

Про концепцію Конструкція `switch`

Конструкції switch мають давню й шановану історію у мовах програмування. Їх запровадили в C, де вони цінувалися за швидкість. Та швидкість давалася ціною вельми обмеженої функціональності. У C# роль конструкції switch розширили за межі цілих чисел. Конструкції switch можуть охоплювати будь-який довільний тип, значення чи посилання.

Якщо ми приходимо з функціональної мови, то найближчим до дискримінованих обʼєднань і зіставлення зі зразком, що є в C#, буде саме робота з конструкціями switch (і виразами switch, про які йдеться в іншому місці). Однак вони аж ніяк не зрівняються з дискримінованими обʼєднаннями у здатності забезпечувати безпеку типів.

Прості конструкції switch нагадують своїх предків із C і поєднують switch, case, break та default.

int direction = GetDirection();
switch (direction)
{
    case 1:
        GoLeft();
        break;
    case 2:
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

Наведену конструкцію можна застосувати до будь-якого простого типу: примітивів і рядків тексту (англ. string).

Коли до цього додаються типи посилань, потрібен додатковий синтаксис: спершу звести тип, а потім додати перевірки (when), хоч перевірки можна застосовувати й до простих випадків зі значеннями. Це показано нижче:

Animal animal = GetAnimal();

switch(animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}
  • Гілка default необовʼязкова, але зазвичай бажана.
  • Інструкція break обовʼязкова для будь-якої непорожньої гілки case.
  • Очевидно, тип усіх аргументів міток case має бути похідним від типу аргументу switch. Аргумент switch типу Object, очевидно, дає найширший вибір.
  • Вираз перевірки може містити будь-що з області видимості, а не лише члени аргументу case.
  • Кілька case з різними аргументами case можуть указувати на один і той самий блок коду.

Документація з конструкції switch дає вступ до конструкцій switch.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Конструкція `switch`

Практика заблокована

Розблокуйте ще 6 вправ, щоб практикувати концепцію Конструкція `switch`