Работа с Enum Switch в C#: примеры и лучшие практики

В C# ключевое слово enum используется для объявления перечисления, которое представляет собой набор именованных констант. Оператор «switch» используется для выполнения различных действий в зависимости от значения выражения. В сочетании термин «переключатель перечисления» означает использование оператора переключателя с типом перечисления.

Вот несколько методов, связанных с работой с переключателем перечисления в C#:

  1. Базовый переключатель перечисления.
    Вы можете использовать оператор switch для обработки различных случаев в зависимости от значения перечисления. Например:

    enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
    Days day = Days.Monday;
    switch (day)
    {
       case Days.Monday:
           Console.WriteLine("It's Monday!");
           break;
       case Days.Tuesday:
           Console.WriteLine("It's Tuesday!");
           break;
       // Handle other cases...
    }
  2. Обработка неизвестных значений перечисления:
    Вы можете использовать регистр «по умолчанию» для обработки неизвестных значений перечисления:

    switch (day)
    {
       case Days.Monday:
           Console.WriteLine("It's Monday!");
           break;
       case Days.Tuesday:
           Console.WriteLine("It's Tuesday!");
           break;
       default:
           Console.WriteLine("Unknown day!");
           break;
    }
  3. Флаги перечисления с помощью Switch:
    Если ваше перечисление использует атрибут [Flags] и представляет собой комбинацию значений, вы можете использовать побитовые операторы в операторе переключения:

    [Flags]
    enum Colors { None = 0, Red = 1, Green = 2, Blue = 4 }
    Colors chosenColors = Colors.Red | Colors.Blue;
    switch (chosenColors)
    {
       case Colors.Red:
           Console.WriteLine("Red is chosen!");
           break;
       case Colors.Green:
           Console.WriteLine("Green is chosen!");
           break;
       case Colors.Blue:
           Console.WriteLine("Blue is chosen!");
           break;
       case Colors.Red | Colors.Blue:
           Console.WriteLine("Red and Blue are chosen!");
           break;
       // Handle other cases...
    }