Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
shwanoff
6 лет назад

Перечисление (enum) в языке C#

Перечисление (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#

1
0.000 GOLOS
На Golos с April 2018
Комментарии (0)
Сортировать по:
Сначала старые