Перечисление — это конструкция языка которая содержит в себе набор именованных констант, которые хранят в себе определённое значение.
Ключевое слово enum объявляет перечислимый тип. Формат записи перечисления таков:
enum имя {список_перечисления};
Здесь с помощью элемента имя указывается имя типа перечисления. Элемент список_перечисления представляет собой список идентификаторов, разделенных запятыми.
Причисления наследуется от Enum , который наследуется от ValueType по этому они относятся к категории структурных типов.
Перечислимый тип определяется как набор идентификаторов, с точки зрения языка играющих ту же роль, что и обычные именованные константы, но связанные с этим типом.
Константу перечисления можно использовать везде, где допустимо целочисленное значение. Однако между типом enum и встроенным целочисленным типом неявные преобразования не определены, поэтому при необходимости должна использоваться явно заданная операция приведения типов. В случае преобразования одного типа перечисления в другой также необходимо использовать приведение типов.
По умолчанию перечисления используют тип int, но можно также создать перечисление любого другого целочисленного типа, за исключением типа char. Чтобы задать тип, отличный от int, укажите этот базовый тип после имени перечисления и двоеточия. Например, следующая инструкция создает перечисление apple с базовым типом byt
1 2 3 4 5 6 7 |
enum EnumType : byte { Zero = 0, One = 1, Two = 2, Three = 3 } |
В примере выше явно указан тип перечисления byte.
Преимущества перечислений:
Использование перечислений позволяет сделать исходные коды программ более читаемыми, так как позволяют заменить числа неким обозначением слов, кодирующие определённые значения, на читаемые имена. К примеру дни недели можно представить как в виде чисел 1,2,3,4,5,6,7 так и в виде имен понедельник, вторник, итд.
На первый взгляд перечисления могут показаться бесполезными в программировании, но на самом деле это не так. Представьте у нас есть робот, который двигается вперед, вправо, влево и назад. В место того что бы передавать в него значения команд в виде цифр 1,2,3,4 мы можем передавать команды UP, DOWN,LEFT, RIGHT. Во первых это дает возможность избежать ошибок в коде, но и упростит понимание программы.