Перечисление (enum) — это набор именованных констант, позволяющих сделать исходный код программы более удобочитаемым. Оно позволяет задать имена для небольшого набора используемых целочисленных значений.

Зачем нужны перечисления (enum)?

Рассмотрим следующий пример. В рамках приложения нем необходимо иметь переменную, в которой будет храниться день недели. Для того, чтобы решить эту задачу можно просто завести целочисленную переменную, в которой хранить номер дня недели. Но тут возникает другая проблема, как вести отчет, от нуля или от единицы? А из этого вытекает следующая проблема, если ваш проект в дальнейшем будет поддерживать другой человек, у него могут возникнуть большие трудности, так как он не будет знать, что именно эти числа обозначают. Другой вариант, это хранить имя дня недели в строковой переменно, но и тут не все гладко, так как возникает вероятность опечатки, использования больших и маленьких букв и так далее.

Для решения подобных проблем отлично подходят перечисления (enum). Они позволяют создавать собственные миниатюрные типы данных и использовать из в исходном коде.

Перечисление (enum)

Перечисление (enum)

Объявление перечислений (enum)

Наиболее полный обобщенный формат объявления перечисления выглядит следующим образом:

модификтор_доступа enum имя : тип
{
    имя1 = значение1,
    имя2 = значение2
}

Давайте рассмотрим описанный выше пример с днями недели и объявим соответствующее перечисление:

/// <summary>
/// Дни недели.
/// </summary>
public enum WeekDays : byte
{
    /// <summary>
    /// Понедельник.
    /// </summary>
    Monday = 1,

    /// <summary>
    /// Вторник.
    /// </summary>
    Tuesday = 2,

    /// <summary>
    /// Среда.
    /// </summary>
    Wednesday = 3,

    /// <summary>
    /// Четверг.
    /// </summary>
    Thursday = 4,

    /// <summary>
    /// Пятница.
    /// </summary>
    Friday = 5,

    /// <summary>
    /// Суббота.
    /// </summary>
    Saturday = 6,

    /// <summary>
    /// Воскресенье.
    /// </summary>
    Sunday = 7,
}

Обратите внимание на несколько особенностей объявления перечисления. Рекомендуется давать имя перечисления во множественном числе и с большой буквы. Лучше всего использовать тип byte, если нужны значение больше либо равные нулю, или sbyte для отрицательных значений. Имена значений перечисления также пишутся с большой буквы, но в единственном числе. Рекомендуется задавать конкретные значения для каждого элемента перечисления для большей наглядности. Каждый элемент перечисления рекомендуется писать с новой строки. После последнего элемента можно оставлять запятую. Перечисления принято выносить в отдельные файлы или же создавать один файл, содержащий все перечисления проекта. Также для удобства можно рекомендуется добавлять xmldoc комментарии как ко всему перечислению, так и к каждому его элементу. И настоятельно не рекомендуется использование кириллицы для имен элементов перечисления. Решение этой задачи подробно рассматривается в статье Отображение значения Enum в C# на русском.

Но перечисление можно объявлять и в более сжатом формате. По умолчанию используется тип int, нумерация ведется с нуля.

enum WeekDays
{
            Monday,
            Tuesday,
            Wednesday,
            Thursday,
            Friday,
            Saturday,
            Sunday,
}

Использование перечислений (enum)

Для того, чтобы обратиться к перечислению, необходимо просто указать имя перечисления и его значение через точку. Перечисления могут использоваться в качестве аргументов метода, что делает код намного более читаемым, чем использование «магических переменных».

static void Main(string[] args)
{
    WriteDay(WeekDays.Friday);
    Console.ReadLine();
}

public static void WriteDay(WeekDays day)
{
    Console.WriteLine($"Today is {day}");
}

Обратите внимание, что имеется возможность взаимного приведения числе и перечислений. То есть мы можем приводить как целое число из возможного диапазона к перечислени

WriteDay((WeekDays) 3);

так и в элемент перечисления к целому числу

Console.WriteLine((int) WeekDays.Wednesday);

Заключение

Использование перечислений в коде считается очень хорошей практикой среди программистов. Это позволяет сделать код намного более читаемым и легко масштабируемым.

P.S. Присоединяйся в любой удобной для тебя социальной сети. Для меня очень важно оставаться с тобой на связи, ведь у меня есть еще много полезной информации о программировании для тебя, которой я хочу с тобой поделиться.

Вконтакте
Facebook
Telegram
Twitter
Одноклассники
Дзен
Google+

 
Рубрики: C#

shwan

Программист .NET

×
%d такие блоггеры, как: