Перечисление

Перечисление — это набор допустимых значений, которые может принимать свойство объекта. В отличие от справочников этот набор значений фиксирован. Пользователь не может изменять его. При работе в системе пользователь видит перечисления в виде выпадающих списков. На рисунке представлен пример отображения перечисления Статус завершения задачи на форме расширенного поиска.

Есть два типа перечислений: системные и пользовательские. Список сгруппированных перечислений отображается в дизайнере в разделе Объекты.

Действия с перечислениями

Вы можете выполнять следующие действия с ними:

  • создавать. Подробнее об этом читайте в статье «Создание перечисления»;
  • редактировать. Для этого перейдите в карточку перечисления, внесите изменения и нажмите Сохранить;
  • удалять. Для этого в разделе Объекты в списке перечислений наведите курсор на название перечисления, нажмите на кнопку и подтвердите действие;
  • публиковать. Для этого в карточке перечисления наведите курсор на кнопку и выберите Публиковать. При необходимости добавьте комментарий.

Вы можете выполнять эти действия только с пользовательскими перечислениями.

Карточка перечисления

В ней отображается полная информация о перечислении: структура, настройки и т. п.

Чтобы открыть карточку, в списке объектов нажмите на название перечисления. На рисунке представлен пример карточки.

Вкладка «Общие»

На этой вкладке отображается общая информация о перечислении, которая была указана при его создании. О настройках на этой вкладке читайте в статье «Создание перечисления».

Вкладка «Значения»

На этой вкладке отображаются значения перечисления. Пример вкладки представлен на рисунке.

На ней вы можете выполнять следующие действия со значениями:

  • создавать. Подробнее об этом читайте в статье «Создание значения перечисления»;
  • редактировать. Для этого нажмите на название значения. В появившемся окне внесите изменения и нажмите Сохранить;
  • удалять. Для этого в строке значения перечисления нажмите на .

Вы можете выполнять эти действия только со значениями пользовательских перечислений.

Вкладка «Дополнительные»

Эта вкладка есть только в карточке пользовательских перечислений. На ней отображается дополнительная настройка. Пример вкладки представлен на рисунке.

Показывать в дереве типов — возможность отображать перечисление в дереве типов.

objects.html create-enumeration.html

Нашли опечатку? Выделите текст, нажмите ctrl + enter и оповестите нас

C++ | Перечисления

Последнее обновление: 09. 10.2017

Перечисления (enum) представляют еще один способ определения своих типов. Их отличительной особенностью является то, что они содержат набор числовых констант.

Определим простейшее перечисление:


enum seasons
{
	spring,
	summer,
	autumn,
	winter
};

Для определения перечисления применяется ключевое слово enum, после которого идет название перечисления. Затем в фигурных скобках идет перечисление констант через запятую. Каждой константе по умолчанию будет присваиваться числовое значение начиная с нуля. То есть в данном случае spring=0, a winter=3.

Используем перечисление:


#include <iostream>
enum seasons
{
	spring,
	summer,
	autumn,
	winter
};
int main()
{
	seasons currentSeason = autumn;
	// или так
	// seasons currentSeason = seasons::autumn;
	std::cout << "Season: " << currentSeason << std::endl;
	return 0;
}

Мы можем определить переменную типа seasons и присвоить этой переменной значение одной из констант, объявленных в перечислении. Но фактически это будет числовое значение. В частности, консольный вывод данной программы:

Season: 2

В то же время перечисления — это отдельный тип, поэтому мы не можем присвоить переменной напрямую числовое значение:

seasons currentSeason = 2;	// ошибка

Если нас не устраивают значения по умолчанию для констант, то мы можем явным образом задать значения. Например, установить начальное значение:


enum seasons
{
	spring = 1,
	summer,	//2
	autumn,	//3
	winter	//4
};

В этом случае значения второй и последующих констант будет увеличиваться на единицу.

Также можно задать значение для каждой константы:


enum seasons
{
	spring = 1,
	summer = 2,
	autumn = 4,
	winter = 8
};

Когда необходимы перечисления? Перечисления могут использоваться, когда у нас есть ряд логически связанных констант, которые естественно лучше определить в одном общем типе данных.

Например:


#include <iostream>
enum operations
{
	add = 1,
	subtract = 2,
	multiply = 4
};
int main()
{
	int operation;
	int x1;
	int x2;
	int result;

	std::cout << "Add: 1 \tSubtract: 2 \tMultiply: 4" << std::endl;
	std::cout << "Input x1: ";
	std::cin >> x1;
	std::cout << "Input x2: ";
	std::cin >> x2;
	std::cout << "Input operation number: ";
	std::cin >> operation;

	switch (operation)
	{
	case operations::add: 
		result = x1 + x2;
		break;
	case operations::subtract:
		result = x1 - x2;
		break;
	case operations::multiply:
		result = x1 * x2;
		break;
	}

	std::cout << "Result: " << result << std::endl;
	return 0;
}

В данном случае все арифметические операции хранятся в перечислении operations. В зависимости от выбранной операции в конструкции switch производятся определенные действия.

НазадСодержаниеВперед

Документация JDK 19 — Главная

  1. Главная
  2. Ява
  3. Java SE
  4. 19

Обзор

  • Прочтите меня
  • Примечания к выпуску
  • Что нового
  • Руководство по миграции
  • Загрузить JDK
  • Руководство по установке
  • Формат строки версии

Инструменты

  • Технические характеристики инструментов JDK
  • Руководство пользователя JShell
  • Руководство по JavaDoc
  • Руководство пользователя средства упаковки

Язык и библиотеки

  • Обновления языка
  • Основные библиотеки
  • HTTP-клиент JDK
  • Учебники по Java
  • Модульный JDK
  • Руководство программиста API бортового регистратора
  • Руководство по интернационализации

Технические характеристики

  • Документация API
  • Язык и ВМ
  • Имена стандартных алгоритмов безопасности Java
  • банок
  • Собственный интерфейс Java (JNI)
  • Инструментальный интерфейс JVM (JVM TI)
  • Сериализация
  • Проводной протокол отладки Java (JDWP)
  • Спецификация комментариев к документации для стандартного доклета
  • Прочие характеристики

Безопасность

  • Руководство по безопасному кодированию
  • Руководство по безопасности

Виртуальная машина HotSpot

  • Руководство по виртуальной машине Java
  • Настройка сборки мусора

Управление и устранение неполадок

  • Руководство по устранению неполадок
  • Руководство по мониторингу и управлению
  • Руководство по JMX

Client Technologies

  • Руководство по специальным возможностям Java

Оператор перечисления — Visual Basic

  • Статья
  • 7 минут на чтение

Объявляет перечисление и определяет значения его членов.

Синтаксис

 [ <список атрибутов> ] [ модификатор доступа ] [ Тени ]
Enum enumerationname [ Как тип данных ]
   Список членов
Конец перечисления
 

Детали

  • Список атрибутов

    Дополнительно. Список атрибутов, которые применяются к этому перечислению. Вы должны заключить список атрибутов в угловые скобки (« < » и « > »).

    Атрибут FlagsAttribute указывает, что значение экземпляра перечисления может включать несколько элементов перечисления и что каждый элемент представляет битовое поле в значении перечисления.

  • модификатор доступа

    Дополнительно. Указывает, какой код может получить доступ к этому перечислению. Может быть одним из следующих:

    • Общественный

    • Защищенный

    • Друг

    • Частный

    • Защищенный друг

    • Частная охраняемая

  • Тени

    Дополнительно. Указывает, что это перечисление повторно объявляет и скрывает программный элемент с таким же именем или набор перегруженных элементов в базовом классе. Вы можете указать Shadows только для самого перечисления, а не для любого из его членов.

  • имя перечисления

    Обязательно. Название перечисления. Сведения о допустимых именах см. в разделе Объявленные имена элементов.

  • тип данных

    Дополнительно. Тип данных перечисления и всех его членов.

  • список участников

    Обязательно. Список констант-членов, объявляемых в этом операторе. Несколько членов появляются в отдельных строках исходного кода.

    Каждая член имеет следующий синтаксис и части: [<список атрибутов>] имя члена [ = инициализатор ]

    Часть Описание
    имя участника Обязательно. Имя этого участника.
    инициализатор Дополнительно. Выражение, которое оценивается во время компиляции и назначается этому члену.
  • Конец Перечисление

    Завершает блок Enum .

Если у вас есть набор неизменных значений, которые логически связаны друг с другом, вы можете определить их вместе в перечислении. Это обеспечивает понятные имена для перечисления и его членов, которые легче запомнить, чем их значения. Затем вы можете использовать элементы перечисления во многих местах вашего кода.

Преимущества использования перечислений включают следующее:

  • Сокращает количество ошибок, вызванных перестановкой или опечаткой чисел.

  • Облегчает изменение значений в будущем.

  • Облегчает чтение кода, что снижает вероятность появления ошибок.

  • Обеспечивает совместимость с последующими версиями. Если вы используете перечисления, ваш код с меньшей вероятностью даст сбой, если в будущем кто-то изменит значения, соответствующие именам элементов.

Перечисление имеет имя, базовый тип данных и набор элементов. Каждый член представляет собой константу.

Перечисление, объявленное на уровне класса, структуры, модуля или интерфейса вне какой-либо процедуры, является перечислением членов . Это член класса, структуры, модуля или интерфейса, в котором он объявлен.

Доступ к перечислениям членов можно получить из любого места внутри их класса, структуры, модуля или интерфейса. Код вне класса, структуры или модуля должен дополнять имя перечисления членов именем этого класса, структуры или модуля. Вы можете избежать необходимости использовать полные имена, добавив оператор Imports в исходный файл.

Перечисление, объявленное на уровне пространства имен вне любого класса, структуры, модуля или интерфейса, является членом пространства имен, в котором оно появляется.

Контекст объявления для перечисления должен быть исходным файлом, пространством имен, классом, структурой, модулем или интерфейсом и не может быть процедурой. Дополнительные сведения см. в разделе Контексты объявлений и уровни доступа по умолчанию.

Вы можете применять атрибуты к перечислению в целом, но не к его членам по отдельности. Атрибут вносит информацию в метаданные сборки.

Тип данных

Оператор Enum может объявить тип данных перечисления. Каждый член принимает тип данных перечисления. Вы можете указать Byte , Integer , Long , SByte , Short , UIInteger , ULong или UShort 2 .4 .

Если вы не укажете тип данных для перечисления, каждый член принимает тип данных своего инициализатора . Если вы укажете оба тип данных и инициализатор , тип данных инициализатора должен быть конвертируемым в тип данных . Если нет ни типа данных , ни инициализатора , по умолчанию используется тип данных Integer .

Инициализация элементов

Оператор Enum может инициализировать содержимое выбранных элементов в списке элементов . Вы используете инициализатор для предоставления выражения, которое будет назначено члену.

Если не указать инициализатор для элемента, Visual Basic инициализирует его либо нулем (если это первый элемент в списке элементов ), либо значением, на единицу большим, чем значение непосредственно предшествующего член .

Выражение, предоставленное в каждом инициализаторе , может быть любой комбинацией литералов, других уже определенных констант и уже определенных элементов перечисления, включая предыдущий член этого перечисления. Вы можете использовать арифметические и логические операторы для объединения таких элементов.

Вы не можете использовать переменные или функции в инициализаторе . Однако вы можете использовать ключевые слова конверсии, такие как CByte и CShort . Вы также можете использовать AscW , если вы вызываете его с постоянным аргументом String или Char , так как это можно оценить во время компиляции.

Перечисления не могут иметь значений с плавающей запятой. Если элементу присвоено значение с плавающей запятой и для Option Strict установлено значение on, возникает ошибка компилятора. Если Опция Strict отключена, значение автоматически преобразуется в тип Enum .

Если значение элемента превышает допустимый диапазон для базового типа данных или если вы инициализируете какой-либо элемент максимальным значением, разрешенным базовым типом данных, компилятор сообщает об ошибке.

Модификаторы

Перечисления классов, структур, модулей и элементов интерфейса по умолчанию имеют открытый доступ. Вы можете настроить их уровни доступа с помощью модификаторов доступа. Перечисления членов пространства имен по умолчанию имеют доступ для друзей. Вы можете настроить их уровни доступа на общедоступные, но не на частные или защищенные. Дополнительные сведения см. в разделе Уровни доступа в Visual Basic.

Все члены перечисления имеют общий доступ, и вы не можете использовать для них какие-либо модификаторы доступа. Однако, если само перечисление имеет более ограниченный уровень доступа, указанный уровень доступа перечисления имеет приоритет.

По умолчанию все перечисления являются типами, а их поля — константами. Поэтому ключевые слова Shared , Static и ReadOnly нельзя использовать при объявлении перечисления или его членов.

Перечисления обычно представляют взаимоисключающие значения. Включив атрибут FlagsAttribute в Enum , вы можете вместо этого присвоить несколько значений экземпляру перечисления. Атрибут FlagsAttribute указывает, что перечисление должно рассматриваться как битовое поле, то есть набор флагов. Они называются побитовыми перечислениями.

При объявлении перечисления с помощью атрибута FlagsAttribute рекомендуется использовать степени двойки, то есть 1, 2, 4, 8, 16 и т. д. для значений. Мы также рекомендуем, чтобы "None" было именем члена, значение которого равно 0. Дополнительные рекомендации см. в разделе FlagsAttribute и Enum.

Пример 1

В следующем примере показано, как использовать оператор Enum . Обратите внимание, что член называется EggSizeEnum.Medium , а не Medium .

 Яйцо публичного класса
    EggSizeEnum
        Джамбо
        Очень большой
        Большой
        Середина
        Небольшой
    Конец перечисления
    Публичный суб-браконьер()
        Уменьшить размер As EggSizeEnum
        размер = EggSizeEnum.Medium
        'Продолжить обработку...
    Конец сабвуфера
Конец класса
 

Пример 2

Метод в следующем примере не относится к классу Egg . Поэтому EggSizeEnum полностью определяется как Egg.EggSizeEnum .

 Public Sub Scramble (размер ByVal As Egg.EggSizeEnum)
    ' Процесс для трех самых больших размеров.
    ' Выдать исключение для любого другого размера.
    Выберите размер корпуса
        Случай Egg.EggSizeEnum.Jumbo
            ' Процесс.
        Случай Egg.EggSizeEnum.ExtraLarge
            ' Процесс.
        Случай Egg.EggSizeEnum.Large
            ' Процесс.
        Дело еще
            Выбросить New ApplicationException ("размер недействителен: " & size.ToString)
    Конец выбора
Конец сабвуфера
 

Пример 3

В следующем примере оператор Enum используется для определения связанного набора именованных постоянных значений. В этом случае значения — это цвета, которые вы можете выбрать для разработки форм ввода данных для базы данных.

 Общедоступные цвета интерфейса Enum
    МистиРоуз = &HE1E4FF&
    Сланцево-серый = &H908070&
    ДоджерБлю = &HFF901E&
    DeepSkyBlue = &HFFBF00&
    SpringGreen = &H7FFF00&
    Лесной зеленый = &h328B22&
    Золотарник = &h30A5DA&
    Огнеупорный кирпич = &h3222B2&
Конец перечисления
 

Пример 4

В следующем примере показаны значения, содержащие как положительные, так и отрицательные числа.

 Уровень безопасности перечисления
    Нелегальный вход = -1
    Минимальная безопасность = 0
    Максимальная безопасность = 1
Конец перечисления
 

Пример 5

В следующем примере предложение As используется для указания типа данных перечисления.

 Общедоступное перечисление MyEnum как байт
    Нуль
    Один
    Два
Конец перечисления
 

Пример 6

В следующем примере показано, как использовать побитовое перечисление. Экземпляру побитового перечисления может быть присвоено несколько значений. Объявление Enum включает атрибут FlagsAttribute, указывающий, что перечисление можно рассматривать как набор флагов.

 ' Применить атрибут Flags, который позволяет
' перечисления иметь несколько значений.
 Public Enum FilePermissions как целое число
    Нет = 0
    Создать = 1
    Читать = 2
    Обновление = 4
    Удалить = 8
Конец перечисления
Общедоступная подпрограмма ShowBitwiseEnum()
    ' Объявить объект неисключительного перечисления и
    ' установить несколько значений. 
    Dim Perm As FilePermissions
    perm = FilePermissions.Read или FilePermissions.Update
    ' Показать значения в объекте перечисления.
    Console.WriteLine(perm.ToString)
    ' Вывод: чтение, обновление
    ' Показать общее целочисленное значение всех значений
    ' в объекте перечисления.
    Console.WriteLine(CInt(постоянный))
    ' Выход: 6
    ' Показать, содержит ли объект перечисления
    ' указанный флаг.
    Console.WriteLine(perm.HasFlag(FilePermissions.Update))
    ' Вывод: Истина
Конец сабвуфера
 

Пример 7

В следующем примере выполняется итерация перечисления. Он использует метод GetNames для получения массива имен элементов из перечисления и метод GetValues ​​для получения массива значений элементов.

 перечисление EggSizeEnum
 Джамбо
 Очень большой
 Большой
 Середина
 Небольшой
Конец перечисления
Общедоступная подпрограмма итерации ()
 Тусклые имена = [Enum].GetNames (GetType (EggSizeEnum))
 Для каждого имени В именах
 Console.
Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *