Тело определения перечислимого типа должно содержать определение нуля или более членов перечисления, которые являются именованными константами перечислимого типа. Никакие два члена не могут иметь одинаковое имя.
enum-member-declarations:
enum-member-declaration
enum-member-declarations , enum-member-declaration
enum-member-declaration:
attributesopt identifier
attributesopt identifier = constant-expression
attributesopt identifier = expression
Каждый член перечисления имеет ассоциированное с ним константное значение. Тип этого значения - это базовый тип перечисления. Несколько членов перечисления могут разделять общее ассоциированное с ними значение.
Ассоциированное значение члена перечисления может определяться явным или неявным образом. Если определение члена перечисления содержит присваивание константного значения, то это значение становится ассоциированным значением члена перечисления. Если определение члена перечисления содержит присваивание выражения, то вычисленное значение становится ассоциированным значением члена перечисления. Выражение может быть составлено из элементов текущего перечисления, элементов других перечислений или из каких-либо константных значений целого типа.
В противном случае ассоциированное значение устанавливается неявно по следующим правилам:
Для первого члена перечисления присваивается значение 0.
Для остальных членов перечисления значение получается путем увеличения на единицу значения предыдущего члена.
Enum Weekday
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
End Enum;
Атрибуты и выражения в элементах перечислений:
Public Class ElementAccessAttribute: System.Attribute
Description: String;
Constructor ElementAccessAttribute(ElementDescription: String);
Begin
Description := ElementDescription;
End Constructor;
End Class;
Enum UserAccess
[ElementAccess("Нет прав доступа")]
None = 0,
[ElementAccess("Право на чтение")]
Read = 1,
[ElementAccess("Право на запись")]
Write = 2,
[ElementAccess("Право на вставку записей")]
Insert = 4,
[ElementAccess("Право на удаление записей")]
Delete = 8,
[ElementAccess("Все права доступа")]
All = Read + Write + Insert + Delete
End Enum;
См.также: