English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Уровень 1 учебник

C# Уровень 2 учебник

C# ООП (ориентированное на объекты)

Перечисления (Enum) в C#

В 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 - это абстрактный класс.