В программировании и информатике системы используют различные типизации. Системы типов позволяют грамотно обрабатывать данные, а также хранить их и выполнять разнообразные операции/расчеты. Каждый язык программирования имеет свою собственную типизацию. Рассматривая данную особенность в более широком смысле, можно выделить несколько видов данных:

  • целочисленный;
  • логический;
  • вещественный;
  • перечисляемый.

Это наиболее распространенные типы информации. Сегодня предстоит на примере C# познакомиться с типом the enum.

Определение

Тип перечисления (enumeration, enumerated type) – это тип данных, в котором множество значений представляет собой ограниченный список идентификаторов. Он определяется набором именованных констант заданного целочисленного значения.

Чтобы определить enums, необходимо воспользоваться соответствующим ключевым словом. Далее – указать имена элементов перечисления:

Перечисления: enum

По умолчанию связанные значения констант компонентов the enums рассматриваются как the int. Они начинаются с 0, увеличиваясь на единицу в соответствие с порядком текста. Разработчик способен явно указать любой другой целочисленный вид информации в качестве базового для the enum. Вот – наглядный пример соответствующей ситуации:

Перечисления: enum

Рекомендуется запомнить следующие особенности:

  1. Нельзя определять методы внутри определения enumerations.
  2. Для добавления функциональных возможностей к перечислению, потребуется создать метод расширения.
  3. Значение по умолчанию у the enum – E. Это параметр, который создан при помощи выражения (E)0, даже если 0 не имеет соответствующего компонента перечисления.

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

Битовые флаги

Enum может представлять собой комбинацию вариантов выбора. Для этого он должен быть представлен битовым флагом. В таких элементах отдельный выбор – это битовое поле.

Связанные значения элементов в enum data type реализованы в качестве степени двойки. Далее разрешается использование побитовых логических операторов | или & для комбинирования или пересечения соответственно.

Перечисления: enum

Чтобы сослаться на то, что the enum объявляет битовые поля, к нему применяется атрибут Flags. Выше – наглядный пример того, как некоторые типичные комбинации включаются в определение the enum data type.

Ограничения

System.Enum – это абстрактный базовый класс всех перечислений. Он представлен разнообразными методами, с помощью которых допустимо получать данные о the enums type и его непосредственных значениях.

Упомянутый абстрактный базовый класс может быть использован разработчиком в качестве ограничителя базового класса. Используется для того, чтобы указать, что параметр типа – это the enums type.

Любой тип перечисления будет удовлетворять ограничению struct. Данный элемент используется для ссылки на то, что type-параметр не допускает NULL-значения.

Преобразования

Любой enums поддерживает явные преобразования. Они осуществляются между enums type и его базовым целочисленным типом. Если значение приведено разработчиком к базовому виду, результатом станет связанный целочисленный параметр элемента перечисления.

Перечисления: enum

Метод the Enum.IsDefined используется для определения факта содержания в enums элемента перечисления с определенным связанным значения.

Для любого перечисления поддерживается связка «упаковка–преобразование и распаковка–преобразование» в System.Enum. Обратные операции тоже предусматриваются.

Использование и принцип работы в программировании

Enums может быть использован в:

  • объявлениях переменных;
  • формальных параметров методов, процедур и функций.

Его значения присваиваются соответствующим переменным, передаются через параметры соответствующих видов функций. Языки программирования поддерживают возможность сравнения рассматриваемого информационного типа на равенство и неравенство. Некоторые ЯП допускают прочие операции сравнения для соответствующих значений.

Результатом сравнивания enums data types в таких случаях будет определяться порядком следования используемых значений в объявлении типов. То, что встречается в объявлении раньше, выступает как «меньший» параметр. Иногда enums или некоторый его диапазон может быть использован в качестве вида индекса для массивов. В соответствующем случае для каждого значения выбранного диапазона в рамках масса поддерживается один компонент, реальный порядок следования составляющих полностью соответствует тому, как они указаны в объявлении enums type.

Реализация

The enum в процессе компиляции представляется целочисленными параметрами. Соответствующая реализация будет меняться в зависимости от языка программирования. Она может быть доступна разработчику за счет некоторых «обходных путей» (пример – принудительное преобразование параметра последовательности к целому числу) или полностью скрыто. Реже – реализация полностью управляема программистом. В соответствующем случае разработчик может явно указывать, какими числами будут координироваться все или некоторые параметры the enum.

Все варианты поддерживают положительные и отрицательные стороны:

  1. Возможность использования числовых параметров констант, формирующих перечисления, лишает смысла применения соответствующего data type. Это влечет за собой определенные ошибки.
  2. Явное управление параметрами открывает перед разработчиком некоторые дополнительные возможности.
  3. При наличии явного управления the enum, иногда удается использовать типы-перечисления для организации интерфейсов с модулями, написанными на других языках. 

Реализация рассматриваемого data type позволяет экономить память. При небольшом объеме перечисления для его хранения достаточно нескольких битов. Компилятор может использовать соответствующий факт для уплотнения хранения информации в памяти.

Рациональное и экономное выделение памяти имеет особую значимость, если несколько параметров enums хранятся в одной записи. Уплотнение записей при обработке больших их количеств позволяет освободить память. Компиляторы языков программирования чаще всего лишены такой возможности.

Лучше изучить the enum и другие data types в выбранном языке программирования пользователю помогут дистанционные компьютерные курсы.

Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!