Как подтверждает результат выполнения этой инструкции, при отображении значения перечислимого типа используется его имя. А для получения его целочисленного значения необходимо использовать операцию приведения к типу int. (В этом заключается отличие от ранних версий С#, в которых по умолчанию отображалось целочисленное представление значения перечислимого типа, а не его имя.) Теперь рассмотрим программу, которая демонстрирует использование перечисления apple.
// Демонстрация использования перечисления.
using System;
class EnumDemo {
Интерфейсы, структуры и перечисления345
enum apple { Jonathan, GoldenDel, RedDel, Winsap,
Cortland, Mclntosh };
public static void Main() {
string[] color = {
"красный",
"желтый",
"красный",
"красный",
"красный",
"красно-зеленый"
apple i; // Объявляем переменную перечислимого типа. Используем переменную i для обхода всех членов перечисления.
// Используем перечисление для индексации массива.
for(i = apple.Jonathan; i <= apple.Mclntosh; i++)
Console.WriteLine("Цветсорта " + i + " - " +
color[(int)i]);
Результаты выполнения этой программы таковы:
Jonathan имеет значение О
GoldenDel имеет значение 1
RedDel имеет значение 2
Winsap имеет значение 3
Cortland имеет значение 4
Mclntosh имеет значение 5
Цвет сорта Jonathan - красный
Цвет сорта GoldenDel - желтый
Цвет сорта RedDel - красный
Цвет сорта Winsap - красный
Цвет сорта Cortland - красный
Цвет сорта Mclntosh - красно-зеленый
Обратите внимание на то, как for-циклы управляются переменной типа apple.
Поскольку перечисление — это целочисленный тип, значение перечисления может быть использовано везде, где допустимы целые значения. Поскольку значения перечислимого типа начинаются с нуля, их можно использовать для индексирования массива color (чтобы получить цвет яблок). Заметьте: в этом случае необходимо выполнить приведение типа. Как упоминалось выше, неявные преобразования между целочисленными и перечислимыми типами не определены. Поэтому без явно заданного приведения типа здесь не обойтись. И еще. Поскольку перечислимые типы представляют собой целочисленные значения, их можно использовать для управления switch-инструкцией (соответствующий пример приведен ниже).