Оператор Enum (Visual Basic)
Обновлен: Ноябрь 2007
Объявляет перечисление и определяет значения его элементов.
[ <attribute list> ] [ access modifier ] [ Shadows ]
Enum enumeration name [ As data type ]
member list
End Enum
Компоненты
attribute list
Дополнительный. Список атрибутов, применяемых для данного перечисления. Необходимо заключить Список атрибутов в угловые скобки ("<" и ">").access modifier
Дополнительный. Указывает, что код может получить доступ к этому перечислению. Может принимать следующие значения.Можно задать ProtectedFriend, который разрешает доступ из кода внутри класса перечисления, производного класса или сборки.
Shadows
Дополнительный. Определяет, что данное перечисление повторно объявляет и скрывает идентично именованный элемент программирования или набор перегружаемых элементов в базовом классе. Можно задать Shadows только на самом перечислении, а не на каком-либо из его элементов.enumeration name
Обязательный. Имя перечисления. Допустимые имена см. в разделе Имена объявленных элементов.data type
Требуется, если OptionStrict имеет значение On. Тип данных перечисления и всех его элементов.member list
Обязательный. Список констант элементов, объявляемых в этом операторе. Несколько элементов отображаются на отдельных строках исходного кода.Каждый member имеет следующие синтаксис и компоненты: [<attribute list>] member name [ = initializer ]
Компонент
Описание
member name
Обязательный. Имя данного элемента.
initializer
Дополнительный. Выражение, которое вычисляется во время компиляции и присваивается этому элементу.
EndEnum
Завершает блок Enum.
Заметки
Если имеется набор неизменных значений, логически связанных друг с другом, можно определить их вместе в перечислении. Это позволяет присвоить перечислению и его элементам осмысленные имена, которые легче запомнить, чем их значения. Затем можно использовать элементы перечисления во многих местах в коде. Это также повышает удобочитаемость кода, так как все связанные значения используют то же имя перечисления.
Enum можно использовать только на уровне пространства имен или модуля. Это означает, что контекст объявления для перечисления должен быть исходным файлом, классом, структурой, модулем или интерфейсом и не может быть процедурой. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию.
В операторе Enum можно объявлять тип данных перечисления. Каждый элемент принимает тип данных перечисления. Можно указать Byte, Integer, Long, SByte, Short, UInteger, ULong или UShort.
Если для элемента не указан initializer, Visual Basic инициализирует его как ноль (если он является первым member в member list), или как значение, превышающее предыдущий member на единицу.
Класс, структура, модуль и интерфейс элемента перечисления по умолчанию в режиме доступа PUBLIC. Уровни доступа можно настроить с помощью модификаторов доступа. Элементы перечисления пространства имен по умолчанию находятся в режиме доступа FRIEND. Можно изменить уровни доступа на PUBLIC, но не на PRIVATE или PROTECTED. Дополнительные сведения см. в разделе Уровни доступа в Visual Basic.Правила
Контекст объявления. Перечисление, объявленное на уровне модуля, вне любой процедуры, представляет собой перечислением элементов; оно является элементом класса, структуры, модуля или интерфейса, объявляющего его.
Перечисление, объявленное на уровне пространства имен, вне любого класса, структуры, модуля или интерфейса, является элементом только того пространства имен, в котором находится этот элемент.
Атрибуты. Можно применять атрибуты ко всему перечислению, но не к его отдельным элементам. Атрибут вносит сведения в метаданные сборки.
Модификаторы. По умолчанию все перечисления являются типами и их поля являются константами. Таким образом, ключевые слова SharedStatic и ReadOnly нельзя использовать при объявлении перечисления или его элементов.
Правила типов данных
Тип по умолчанию. Если не указан data type для перечисления, каждый элемент принимает тип данных его initializer. Если задан и data type, и initializer, тип данных initializer должен быть преобразован в data type. Если не задан ни data type, ни initializer, то по умолчанию типом данных является Integer.
Инициализация. Оператор Enum может инициализировать содержимое выбранных элементов в member list. initializer позволяет указать выражение, которое необходимо назначить элементу.
Выражение, поставляемое в каждом initializer, может быть любым сочетанием литералов, других определенных констант и элементов перечисления, включая предыдущий элемент данного перечисления. Для комбинирования этих элементов можно использовать арифметические и логические операторы.
Нельзя использовать переменные или функции в initializer. Однако можно использовать ключевые слова преобразования, такие как CByte и CShort. Также можно использовать функцию AscW для вызова с постоянными аргументами типа String или Char, поскольку ее значение может быть вычислено во время компиляции.
Поведение
Уровень доступа. Все элементы перечисления имеют уровень доступа PUBLIC и к ним нельзя применять какие-либо модификаторы. Однако если перечисление само имеет более ограниченный уровень доступа, указанный уровень доступа перечисления имеет более высокий приоритет.
Область действия. Перечисления элементов доступны в любом месте в пределах их класса, структуры, модуля или интерфейса. Перечисления элементов пространств имен доступны из любого кода в пределах этого пространства имен.
Квалификация. Код вне класса, структуры или модуля необходимо определять с помощью имени перечисления элементов с именем этого класса, структуры или модуля.
Недопустимые значения. Если значение члена превосходит верхнюю границу для используемого типа данных или начальное значение какого-либо члена устанавливается равным наиболее допустимому значению для используемого типа данных, компилятор выводит сообщение об ошибке.
Переменные перечисления представляют собой переменные, объявленные с типом Enum. Такой способ объявления переменных помогает контролировать присваиваемые им значения. Однако по-прежнему можно присвоить значение, которое не является элементом перечисления, при условии, что его тип данных может быть преобразован в тип данных перечисления. Это полезно, если перечисление является полем флага и назначено сочетание флагов для переменной перечисления. В следующем примере показано назначение нескольких флагов переменной перечисления.
Enum filePermissions
create = 1
read = 2
write = 4
delete = 8
End Enum
Dim file1Perm As filePermissions
file1Perm = filePermissions.create Or filePermissions.read
Каждую ссылку на элемент перечисления необходимо определять с помощью имени переменной перечисления или с помощью имени самого перечисления. Так, в предыдущем примере первый элемент перечисления может упоминаться как filePermissions.create, но не как create.
Пример
В следующем примере оператор Enum используется для определения связанного набора значений именованных констант. В данном случае значения представляют собой цвета, которые можно выбрать для создаваемых форм ввода информации в базу данных.
Public Enum InterfaceColors
MistyRose = &HE1E4FF&
SlateGray = &H908070&
DodgerBlue = &HFF901E&
DeepSkyBlue = &HFFBF00&
SpringGreen = &H7FFF00&
ForestGreen = &H228B22&
Goldenrod = &H20A5DA&
Firebrick = &H2222B2&
End Enum
Значения элементов перечислений могут быть как положительными, так и отрицательными, как показано в следующем примере:
Enum SecurityLevel
IllegalEntry = -1
MinimumSecurity = 0
MaximumSecurity = 1
End Enum
См. также
Основные понятия
Явные и неявные преобразования
Встроенные константы и перечисления