Перечисление (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);
Заключение
Использование перечислений в коде считается очень хорошей практикой среди программистов. Это позволяет сделать код намного более читаемым и легко масштабируемым.
Источник: Перечисления (enum) C#