Обратите внимание на то, как переменная типа Apple управляёт циклами for. Значения символически обозначаемых констант в перечислении Apple начинаются с нуля, поэтому их можно использовать для индексирования массива, чтобы получить цвет каждого сорта яблок. Обратите также внимание на необходимость производить приведение типов, когда перечислимое значение используется для индексирования массива. Как упоминалось выше, в C# не предусмотрены неявные преобразования перечислимых типов в целочисленные и обратно, поэтому для этой цели требуется явное приведение типов.
И еще одно замечание: все перечисления неявно наследуют от классаSystem. Enum,который наследует от классаSystem. ValueType,а тот, в свою очередь, — от классаobject.
Инициализация перечисления
Значение одной или нескольких символически обозначаемых констант в перечислении можно задать с помощью инициализатора. Для этого достаточно указать после символического обозначения отдельной константы знак равенства и целое значение. Каждой последующей константе присваивается значение, которое на единицу больше значения предыдущей инициализированной константы. Например, в приведенном ниже фрагменте кода константеRedDelприсваивается значение 10.
enum Apple { Jonathan, GoldenDel, RedDel = 10, Winesap,
Cortland, McIntosh };
В итоге все константы в перечислении принимают приведенные ниже значения.
Jonathan
0
GoldenDel
1
RedDel
10
Winesap
11
Cortland
12
McIntosh
13
Указание базового типа перечисления
По умолчанию в качестве базового для перечислений выбирается типint,тем не менее перечисление может быть создано любого целочисленного типа, за исключениемchar.Для того чтобы указать другой тип, кромеint,достаточно поместить этот тип после имени перечисления, отделив его двоеточием. В качестве примера ниже задается типbyteдля перечисленияApple.
enum Apple : byte { Jonathan, GoldenDel, RedDel,
Winesap, Cortland, McIntosh };
Теперь константаApple . Winesap,например, имеет количественное значение типаbyte.
Применение перечислений