Члены перечислений

Тело определения перечислимого типа должно содержать определение нуля или более членов перечисления, которые являются именованными константами перечислимого типа. Никакие два члена не могут иметь одинаковое имя.

enum-member-declarations:

enum-member-declaration

enum-member-declarations   ,   enum-member-declaration

enum-member-declaration:

attributesopt   identifier

attributesopt   identifier   =   constant-expression

attributesopt   identifier   =   expression

Каждый член перечисления имеет ассоциированное с ним константное значение. Тип этого значения - это базовый тип перечисления. Несколько членов перечисления могут разделять общее ассоциированное с ними значение.

Ассоциированное значение члена перечисления может определяться явным или неявным образом. Если определение члена перечисления содержит присваивание константного значения, то это значение становится ассоциированным значением члена перечисления. Если определение члена перечисления содержит присваивание выражения, то вычисленное значение становится ассоциированным значением члена перечисления. Выражение может быть составлено из элементов текущего перечисления, элементов других перечислений или из каких-либо константных значений целого типа.

В противном случае ассоциированное значение устанавливается неявно по следующим правилам:

Пример

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;

См.также:

Перечислимые типы