Программирование C#, Java, Net - фото

Enum. Перечисления в C# (часть 1)


Оцените данную статью

Периодически в вашей программе необходимы специальные значения (константы). Например, этими значениями может быть множество возвращаемых кодов метода. Допустим имеется функция, которая возвращает число 0 — в случае успеха, 1 — в случае предупреждения, 2 — в случае ошибки. Для человека, читающего Ваш код, будет непонятно, что это за магические числа, без изучения исходников, либо документации к методу. В C# для упрощения данных ситуации существуют перечисления enum.

Перечисление (enum) — это определяемый пользователем тип. Для метода выше, можно задать новый enum для возвращаемого значения. Назовем его ResultCode.

  1. enum ResultCode { Success, Warning, Error };


Какие же плюсы мы получили в коде? С помощью данного перечисления наш код становится более понятным и самодокументированным. Теперь 0 — Success, 1 — Warning, 2 — Error. В основе перечислений лежит int, поэтому можно назвать enum — синтаксическим “сахаром” C#.
Еще один плюс, Enum легко использовать в Visual Studio. Нажимаете Tab и IntelliSense вам поможет.

Enum и строки.

Попробуем преобразовать перечисления C# в строки для отображения на консоли. Для этого вызовем ToString для переменной перечисления. Кстати, Console.Writeline автоматически вызовет ToString (это его поведение по умолчанию).

    1. using System;
    2. class Program
    3. {
    4.    static void Main()
    5.     {
    6.         MyState state = State.Error;
    7.         MyState state2 = State.Ok;
    8.  
    9.         Console.WriteLine(state);
    10.         Console.WriteLine(state2);
    11.     }
    12.  
    13.     enum MyState
    14.     {
    15.         Ok,
    16.         Warning = 2,
    17.         Error = 4
    18.     };
    19. }


На консоли вы должны увидеть две строки — Error и Ok.

Enum и парсинг.

Бывают ситуации, когда у нас имеется строка C# и необходимо конвертировать ее в enum. Для этого в .Net есть статические методы Enum.Parse, Enum.TryParse. Оба они отлично справляются со своей задачей, но советую использовать TryParse. Он не выкидывает исключения, если не получится преобразовать строку в enum. Вы просто проверяете возвращаемое значение метода, true — если преобразование удалось, false — в обратном случае.
Ниже приведу пример кода для ознакомления.

    1. static void Main()
    2. {
    3.            State st;
    4.  
    5.             //выкинет исключение, если не преобразует
    6.             State obj = (State)Enum.Parse(typeof(State), «Ok»);
    7.  
    8.             if (Enum.TryParse(«Ok», out st))
    9.             {
    10.                 //удача
    11.             }
    12.             else
    13.             {
    14.                 //неудача
    15.             }
    16. }
    17.         enum State { Ok, Error, Warning }


На этом всё. Вопросы, не вошедшие в эту статью, будут рассмотрены во второй части о enum.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *