Ответы по Технологии программирования / Перечисление_ описание и назначение
.docxПеречисление(enumeration) — это множество именованных целочисленных констант. Ключевое слово enum объявляет перечислимый тип. Формат записи перечисления таков:
enum имя {список_перечисления);
Здесь с помощью элемента имя указывается имя типа перечисления. Элемент список_перечисления представляет собой список идентификаторов, разделенных запятыми.
Рассмотрим пример. В следующем фрагменте кода определяется перечислениеapple, которое содержит список названий различных сортов яблок.
enum apple { Jonathan, GoldenDel, RedDel, Winsap,
Cortland, Mclntosh } ;
Каждый символ списка перечисления означает целоечисло, причем каждое следующее число (представленное идентификатором) на единицу больше предыдущего. Поскольку значение первого символа перечисления равнонулю, следовательно, идентификатор Jonathan имеет значение 0, GoldenDel — значение 1 и т.д.
Константу перечисления можно использовать везде, где допустимо целочисленноезначение. Однако между типом enum и встроенным целочисленным типом неявныепреобразования не определены, поэтому при необходимости должна использоватьсяявно заданная операция приведения типов. В случае преобразования одного типа перечисления в другой также необходимо использовать приведение типов.
К членам перечисления доступ осуществляется посредством имени типа и оператора "точка". Например, при выполнении инструкции
Console.WriteLine(apple.RedDel + " имеетзначение " +(int)apple.RedDel);
будет отображено следующее.
RedDel имеет значение 2
Как подтверждает результат выполнения этой инструкции, при отображении значения перечислимого типа используется его имя. А для получения его целочисленногозначения необходимо использовать операцию приведения к типу int. (В этом заключается отличие от ранних версий С#, в которых по умолчанию отображалось целочисленное представление значения перечислимого типа, а не его имя.)
Рассмотрим программу, которая демонстрирует использование перечисления apple.
// Демонстрация использования перечисления.
usingSystem;
classEnumDemo {
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 + " имеетзначение " + (int)i);
Console.WriteLine() ;
// Используем перечисление для индексации массива.
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-инструкцией.