Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРИС_шпоры.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
3 Мб
Скачать
☆

21. C#. Перечисления.

Понятие и синтаксис

Перечисление (enumeration, enumerated type) – множество именованных целочисленных констант

enum Имя : ОсновнойТип {

Константа = значение,

...

}

Правила

  • неявно наследуются от System.Enum (наследник System.ValueType); изменить базовый тип нельзя

  • каждая константа — целое число

  • неявное преобразование к целому типу не определено

  • неприменимы модификаторы abstract, virtual, protected

Пример

enum Color : byte {

None = 0,

Red,

Green = 3,

Blue

}

Color color = Color.Green;

На самом деле

struct Color : System.Enum {

public const Color None = (Color)0,

public const Color Red = (Color)1,

public const Color Green = (Color)3,

public const Color Blue = (Color)4

public Byte value__;

}

Ключевое слово enum используется для объявления перечисления, отдельного типа, состоящего из набора именованных констант, который называется списком перечислителя.

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

По умолчанию первому перечислителю задано значение, равное нулю, а значение каждого последующего оператора увеличивается на 1. Например:

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

В этом перечислении Sat имеет значение 0, Sun — 1, Mon — 2 и т. д. Для переопределения значений по умолчанию перечисления могут иметь инициализаторы. Пример.

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

В этом перечислении последовательность элементов принудительно начинается с 1, а не с 0. Однако настоятельно рекомендуется, чтобы перечисление содержало константу со значением 0. Дополнительные сведения см. в разделе Типы перечислений (руководство по программированию в C#).

Каждый тип перечисления имеет базовый тип, который может быть любым целым типом, исключая char. По умолчанию базовым типом элементов перечисления является int. Чтобы объявить перечисление другого целого типа, например byte, после идентификатора поставьте двоеточие, а затем укажите тип.

enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

Для перечисления утверждены следующие типы: byte, sbyte, short, ushort, int, uint, long или ulong.

Переменной типа Days может быть назначено любое значение, входящее в диапазон базового типа; значения не ограничены именованными константами.

Значением по умолчанию enum E является значение, созданное выражением (E)0.Примечание.

Имя перечислителя может не содержать пробелов.

Базовый тип указывает размер хранилища, выделенного для каждого перечислителя. Однако для преобразования из типа enum в целочисленный тип необходимо явное приведение. Например, следующий оператор назначает перечислитель Sun переменной типа int, используя приведение для преобразования enum в int:

int x = (int)Days.Sun;

При применении System.FlagsAttribute к перечислению, содержащему несколько элементов в сочетании с битовой операцией OR, будет заметно, что атрибут оказывает влияние на действие enum, когда оно используется с некоторыми инструментами. Эти изменения можно заметить при использовании таких средств, как методы класса Console, вычислитель выражений и т. д.