Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы по Технологии программирования / Перечисление_ описание и назначение

.docx
Скачиваний:
7
Добавлен:
21.05.2015
Размер:
7.87 Кб
Скачать

Перечисление(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-инструкцией.