Методы класса System::Enum




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

 

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

 

enum class Days { Sunday, Monday, Tuesday, Wednesday,

Thursday, Friday, Saturday };

 

Если переменная meetingDay имеет тип Days, ей можно присвоить только одно из значений, определенных в Days. И если день встречи изменяется, можно назначить переменной meetingDay новое значение из перечисления Days:

 

Days meetingDay = Days::Monday;

// Объявление и инициализация переменной

...

meetingDay = Days::Friday;

// Присваивание переменной нового значения

 

Каждое перечисление имеет базовый тип, который может быть любым целочисленным типом:

Short unsigned short

Int unsigned int

Long unsigned long

Long long unsigned long long

Signed char unsigned char

Char bool

 

По умолчанию базовым типом элементов перечисления является int (Int32). Для объявления перечисления другого целочисленного типа (например, char) нужно после идентификатора поставить двоеточие, за ним – тип, и только после него – список перечисления.

 

enum class Months: char { Jan, Feb, Mar, Apr, May, Jun,

Jul, Aug, Sep, Oct, Nov, Dec };

int x = (int)Days::Sunday;

 

Для преобразования из типа перечисления (enum) в целочисленный тип необходимо явное приведение. Например:

 

int x = (int)Days::Sunday;

 

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

 

enum class Color { Red = 1, Yellow = 2, Blue = 3 };

enum class Medal { Gold = 30, Silver = 20, Bronze = 10 };

enum class MachineState {

PowerOff = 0, // Отключенное питание

Running = 5, // Выполнение

Sleeping = 10, // Бездействие

Hibernating = Sleeping + 5 // Остановленный

};

 

Значения перечислений можно сравнивать с помощью операторов отношения::

==, !=, <, <=, >, >=.

Над значениями перечислений можно выполнять поразрядные операции: ~, &, | и ^ (NOT, AND, OR, XOR).

 

 

Методы класса System::Enum

(https://msdn.microsoft.com/ru-ru/library/system.enum.aspx)

Таблица 10.1. Основные методы класса System::Enum

Имя Описание
CompareTo(v2); Сравнивает текущий объект (v1) с заданным объектом (v2) и возвращает целое число (Int32), указывающее, как соотносятся значения этих объектов: – отрицательное число, если v1 меньше v2; – ноль, если v1 и v2 равны; – положительное число, если v1 больше v2.
Format(t,v,sf); Преобразует указанное значение (v) заданного типа перечисления (t) в эквивалентное строковое представление в соответствии с заданным форматом (sf). Допустимыми значениями формата являются: "D" или "d" – представляет значение v в десятичной форме; "G" или "g" – если значение v равно именованной константе перечисления, то возвращается имя этой константы, в противном случае возвращается десятичный эквивалент v; "F" или "f" – действует так же, как "G" или "g", за исключением того, что наличие FlagsAttribute в объявлении Enum не требуется; "X" или "x" – представляет значение v в шестнадцатеричном формате без начальных символов "0x".
GetName(t,v); GetNames(t); Возвращает имя константы с заданным значением (v) или массив имен констант из указанного перечисления (t).
GetTypeCode(); Возвращает базовый тип для текущего экземпляра.
GetUnderlyingType(t); Возвращает базовый тип заданного перечисления.
GetValues(t); Возвращает массив значений констант из указанного перечисления (t).
HasFlag(flag); Определяет, установлены ли в текущем экземпляре один или несколько битовых флагов (flag).
IsDefined(t,v); Возвращает признак наличия константы с указанным значением (v) в заданном перечислении (t).
Parse(t,s); Parse(t,s,b); Преобразует строковое представление (s) имени или числового значения одной или нескольких констант перечисления в эквивалентный объект перечисления (t). Параметр b указывает, выполняется ли операция с учетом (true) или без учета регистра (false).
ToObject(t,v) Преобразует значение заданного целого числа (v) в элемент перечисления (типа t).
ToString(); ToString(sf); Преобразует числовое значение текущего экземпляра перечисления в эквивалентное ему строковое представление с использованием указанного формата (sf).
TryParse(s,res); TryParse(s,b,res); Преобразует строковое представление (s) имени или числового значения одной или нескольких констант перечисления в эквивалентный объект перечисления (res). Параметр b указывает, выполняется ли операция с учетом (true) или без учета регистра (false). Возвращаемое значение указывает, успешно ли выполнено преобразование.

 

Пример 10.1. Применение метода CompareTo для сравнения значений элементов перечисления.

 

#include "stdafx.h"

using namespace System;

enum class VehicleDoors { Motorbike = 0, Sportscar = 2,

Sedan = 4, Hatchback = 5 };

int main() {

VehicleDoors myVeh = VehicleDoors::Sportscar;

VehicleDoors yourVeh = VehicleDoors::Motorbike;

VehicleDoors otherVeh = VehicleDoors::Sedan;

Console::Write("{0} имеет больше дверей, чем {1}? ",

myVeh, yourVeh);

Console::WriteLine("{0}",

myVeh.CompareTo(yourVeh) > 0? "Yes": "No");

Console::Write("{0} имеет больше дверей, чем {1}? ",

myVeh, otherVeh);

Console::WriteLine("{0}",

myVeh.CompareTo(otherVeh) > 0? "Yes": "No");

Console::ReadLine();

return 0;

}

/* Вывод:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: