English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В C# перечисление (тип перечисления) используется для назначения имен постоянным набору целых числовых значений. Это делает значения постоянных более читаемыми, например, WeekDays.Monday в сравнении с числом 0, его читаемость выше.
Перечисление определяет ключевым словом enum direkt в пространстве имён, классе или структуре. Все имена констант можно объявить в фигурных скобках и разделить запятыми. Ниже определено перечисление рабочих дней.
enum WeekDays { Monday Tuesday Wednesday Четверг, Пятница, Суббота, Воскресенье }
Верх, перечисление WeekDays объявлено в каждой строке, разделенной запятой.
Если значение не назначено члену перечисления, компилятор назначит каждому члену значение по умолчанию (начиная с нуля). Первый член перечисления будет равен 0, и значение каждого следующего члена перечисления увеличится на 1.
enum WeekDays { Monday, // 0 Tuesday, // 1 Wednesday, // 2 Thursday, // 3 Friday, // 4 Saturday, // 5 Sunday // 6 }
Вы можете присвоить различным членам перечисления различные значения. Изменение значения по умолчанию для членов перечисления автоматически распределит инкрементные значения другим членам по порядку.
enum Categories { Electronics, // 0 Food, // 1 Automotive = 6, // 6 Arts, // 7 BeautyCare, // 8 Fashion // 9 }
Вы даже можете присвоить различным членам различные значения.
enum Categories { Electronics = 1, Food = 5, Automotive = 6, Arts = 10, BeautyCare = 11, Fashion = 15, WomanFashion = 15 }
Перечисление может быть любым числовым типом данных, например byte, sbyte, short, ushort, int, uint, long или ulong. Однако, перечисление не может быть типом строки.
Укажите тип после имени enum: :type. Ниже определено байт-перечисление.
enum Categories: byte { Electronics = 1, Food = 5, Automotive = 6, Arts = 10, BeautyCare = 11, Fashion = 15 }
Используйте точечную запись: enum.member для доступа к перечислению
enum WeekDays { Monday Tuesday Wednesday Четверг, Пятница, Суббота, Воскресенье } Console.WriteLine(WeekDays.Monday); // Понедельник Console.WriteLine(WeekDays.Tuesday); // Вторник Console.WriteLine(WeekDays.Wednesday); // Среда Console.WriteLine(WeekDays.Thursday); // Четверг Console.WriteLine(WeekDays.Friday); // Пятница Console.WriteLine(WeekDays.Saturday); // Суббота Console.WriteLine(WeekDays.Sunday); // Пятница
Преобразование перечисления в его базовый целочисленный тип требует явного принудительного преобразования.
enum WeekDays { Monday Tuesday Wednesday Четверг, Пятница, Суббота, Воскресенье } Console.WriteLine(WeekDays.Friday); // Вывод: пятница int day = (int) WeekDays.Friday; // Преобразование из перечисления в int Console.WriteLine(day); // Вывод: 4 var wd = (WeekDays) 5; // Преобразование из int в перечисление Console.WriteLine(wd); // Вывод: суббота
enum - это абстрактный класс.