Читаем C# 4.0: полное руководство полностью

Доступ к членам перечисления осуществляется по имени их типа, после которого следует оператор-точка. Например, при выполнении фрагмента кода

Console.WriteLine(Apple.RedDel + " имеет значение " +

(int)Apple.RedDel) ;

выводится следующий результат.

RedDel имеет значение 2

Как показывает результат выполнения приведенного выше фрагмента кода, для вывода перечислимого значения используется его имя. Но для получения этого значения требуется предварительно привести его к типу int.

Ниже приведен пример программы, демонстрирующий применение перечисления Apple.

// Продемонстрировать применение перечисления.

using System;

class EnumDemo {

  enum Apple { Jonathan, GoldenDel, RedDel, Winesap,

        Cortland, McIntosh };

  static void Main() {

    string[] color = {

      "красный",

      "желтый",

      "красный",

      "красный",

      "красный",

      "красновато-зеленый"

    };

    Apple i; // объявить переменную перечислимого типа

    // Использовать переменную i для циклического

    // обращения к членам перечисления.

    for(i = Apple.Jonathan; i <= Apple.McIntosh; i++)

      Console.WriteLine(i + " имеет значение " + (int)i);

    Console.WriteLine();

    // Использовать перечисление для индексирования массива.

    for(i = Apple.Jonathan; i <= Apple.McIntosh; i++)

    Console.WriteLine("Цвет сорта " + i + " — " + color[ (int)i]);

  }

}

Ниже приведен результат выполнения этой программы.

Jonathan имеет значение 0

GoldenDel имеет значение 1

RedDel имеет значение 2

Winsap имеет- значение 3

Cortland имеет значение 4

McIntosh имеет значение 5

Цвет сорта Jonathan - красный

Цвет сорта GoldenDel - желтый

Цвет сорта RedDel - красный

Цвет сорта Winsap - красный

Цвет сорта Cortland - красный

Цвет сорта McIntosh - красновато-зеленый

Обратите внимание на то, как переменная типа 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.

Применение перечислений
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных