В программировании и информатике системы используют различные типизации. Системы типов позволяют грамотно обрабатывать данные, а также хранить их и выполнять разнообразные операции/расчеты. Каждый язык программирования имеет свою собственную типизацию. Рассматривая данную особенность в более широком смысле, можно выделить несколько видов данных:
- целочисленный;
- логический;
- вещественный;
- перечисляемый.
Это наиболее распространенные типы информации. Сегодня предстоит на примере C# познакомиться с типом the enum.
Определение
Тип перечисления (enumeration, enumerated type) – это тип данных, в котором множество значений представляет собой ограниченный список идентификаторов. Он определяется набором именованных констант заданного целочисленного значения.
Чтобы определить enums, необходимо воспользоваться соответствующим ключевым словом. Далее – указать имена элементов перечисления:
По умолчанию связанные значения констант компонентов the enums рассматриваются как the int. Они начинаются с 0, увеличиваясь на единицу в соответствие с порядком текста. Разработчик способен явно указать любой другой целочисленный вид информации в качестве базового для the enum. Вот – наглядный пример соответствующей ситуации:
Рекомендуется запомнить следующие особенности:
- Нельзя определять методы внутри определения enumerations.
- Для добавления функциональных возможностей к перечислению, потребуется создать метод расширения.
- Значение по умолчанию у the enum – E. Это параметр, который создан при помощи выражения (E)0, даже если 0 не имеет соответствующего компонента перечисления.
The enum используется для демонстрации выбора из набора взаимоисключающих значений или сочетаний вариантов выбора. Данные операции возможны, если рассматриваемый вид определен в качестве битовых флагов.
Битовые флаги
Enum может представлять собой комбинацию вариантов выбора. Для этого он должен быть представлен битовым флагом. В таких элементах отдельный выбор – это битовое поле.
Связанные значения элементов в enum data type реализованы в качестве степени двойки. Далее разрешается использование побитовых логических операторов | или & для комбинирования или пересечения соответственно.
Чтобы сослаться на то, что the enum объявляет битовые поля, к нему применяется атрибут Flags. Выше – наглядный пример того, как некоторые типичные комбинации включаются в определение the enum data type.
Ограничения
System.Enum – это абстрактный базовый класс всех перечислений. Он представлен разнообразными методами, с помощью которых допустимо получать данные о the enums type и его непосредственных значениях.
Упомянутый абстрактный базовый класс может быть использован разработчиком в качестве ограничителя базового класса. Используется для того, чтобы указать, что параметр типа – это the enums type.
Любой тип перечисления будет удовлетворять ограничению struct. Данный элемент используется для ссылки на то, что type-параметр не допускает NULL-значения.
Преобразования
Любой enums поддерживает явные преобразования. Они осуществляются между enums type и его базовым целочисленным типом. Если значение приведено разработчиком к базовому виду, результатом станет связанный целочисленный параметр элемента перечисления.
Метод the Enum.IsDefined используется для определения факта содержания в enums элемента перечисления с определенным связанным значения.
Для любого перечисления поддерживается связка «упаковка–преобразование и распаковка–преобразование» в System.Enum. Обратные операции тоже предусматриваются.
Использование и принцип работы в программировании
Enums может быть использован в:
- объявлениях переменных;
- формальных параметров методов, процедур и функций.
Его значения присваиваются соответствующим переменным, передаются через параметры соответствующих видов функций. Языки программирования поддерживают возможность сравнения рассматриваемого информационного типа на равенство и неравенство. Некоторые ЯП допускают прочие операции сравнения для соответствующих значений.
Результатом сравнивания enums data types в таких случаях будет определяться порядком следования используемых значений в объявлении типов. То, что встречается в объявлении раньше, выступает как «меньший» параметр. Иногда enums или некоторый его диапазон может быть использован в качестве вида индекса для массивов. В соответствующем случае для каждого значения выбранного диапазона в рамках масса поддерживается один компонент, реальный порядок следования составляющих полностью соответствует тому, как они указаны в объявлении enums type.
Реализация
The enum в процессе компиляции представляется целочисленными параметрами. Соответствующая реализация будет меняться в зависимости от языка программирования. Она может быть доступна разработчику за счет некоторых «обходных путей» (пример – принудительное преобразование параметра последовательности к целому числу) или полностью скрыто. Реже – реализация полностью управляема программистом. В соответствующем случае разработчик может явно указывать, какими числами будут координироваться все или некоторые параметры the enum.
Все варианты поддерживают положительные и отрицательные стороны:
- Возможность использования числовых параметров констант, формирующих перечисления, лишает смысла применения соответствующего data type. Это влечет за собой определенные ошибки.
- Явное управление параметрами открывает перед разработчиком некоторые дополнительные возможности.
- При наличии явного управления the enum, иногда удается использовать типы-перечисления для организации интерфейсов с модулями, написанными на других языках.
Реализация рассматриваемого data type позволяет экономить память. При небольшом объеме перечисления для его хранения достаточно нескольких битов. Компилятор может использовать соответствующий факт для уплотнения хранения информации в памяти.
Рациональное и экономное выделение памяти имеет особую значимость, если несколько параметров enums хранятся в одной записи. Уплотнение записей при обработке больших их количеств позволяет освободить память. Компиляторы языков программирования чаще всего лишены такой возможности.
Лучше изучить the enum и другие data types в выбранном языке программирования пользователю помогут дистанционные компьютерные курсы.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!