Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

15.2. Базовый класс перечислений

Основой перечислений служит системный класс Enum

"класс: Enum" , из

пространства имен System. Методы этого класса позволяют в ряде случаев

существенно упростить работу с перечислениями. Рассмотрим только некоторые

статические методы:

public static Type GetUnderlyingType "метод:метод

GetUnderlyingType" (Тип_Перечисления);

возвращает базовый тип перечисления. Аргументом должен быть объект класса

System.Type, представляющий перечисления.

public static string GetName

"метод:метод

GetName"

\y

"метод" (Тип_Перечисления, значение);

возвращает имя константы перечисления, соответствующей второму параметру.

Второй параметр может быть либо переменной с типом перечисления, либо

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

несколько констант с одинаковыми значениями, то выбирается имя самой левой или

явно инициализированной. Если значение отсутствует в списке – возвращается

пустая строка.

p u b l i c s t a t i c s t r i n g F o r m a t "метод:метод

Format"

\y

"метод" (Тип_Перечисления, значение, формат);

второй параметр – переменная с типом перечисления либо значение константы. В

зависимости от формата возвращается либо имя, либо значение константы. Если

формат “G” или “g”, то метод подобен GetName – возвращает имя константы. Если

формат “X” или “x” – возвращается шестнадцатеричное представление значения

константы. При формате “D” или “d” – возвращается десятичное представление.

public static Array GetValues "метод:метод

Array GetValues"

\y

"метод" (Тип_Перечисления);

метод возвращает массив значений всех констант перечисления. Константы

независимо от их размещения в перечислении в массиве размещаются п

о

возрастанию значений. Обратите внимание, что тип результата System.Array.

public static string [ ] GetNames "метод:метод

GetNames"

\y

"метод" (Тип_Перечисления);

метод возвращает массив имен констант перечисления в порядке возрастания

значений констант.

public static bool IsDe fined

"метод:метод

IsDe fined"

\y

"метод" (Тип_Перечисления, значение);

возвращает true, если в перечислении присутствует константа со значением, равным

второму параметру.

В каждом из приведённых методов класса Enum первый параметр должен

представлять тип перечисления (а не его имя). Поэтому в обращениях к этим

методам в качестве первого аргумента нужно использовать объект класса

System.Type, представляющий тип перечисления. Зная имя перечисления, его тип

можно получить с помощью операции typeof().

Следующая программа иллюстрирует особенности и возможности применения

методов базового класса Enum.

// 15_06.cs - перечисления, System.Enum

using System;

class Program

{

enum НомерПланеты : uint

{

Церера = 1, Паллада = 2, Юнона = 3, Веста = 4,

Эрос = 433, Гидальго = 944, Ганимед = 1036,

Амур = 1221, Икар = 1566

}

static void Main( )

{

Console.WriteLine("Базовый тип перечисления: " +

Enum.GetUnderlyingType(typeof(НомерПланеты)));

Console.WriteLine("Значения констант перечисления:");

foreach (uint i in Enum.GetValues(typeof(НомерПланеты)))

Console.Write(" " + i);

Console.Write("\nИмена констант: ");

foreach (string s in Enum.GetNames(typeof(НомерПланеты)))

Console.Write("\n\t" + s);

Console.WriteLine("\nЗначение 433u имеет константа "

+ Enum.Format(typeof(НомерПланеты), 433u, "G"))

;

}

}

Результат выполнения программы:

Базовый тип перечисления: System.UInt32

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

1 2 3 4 433 944 1036 1221 1566

Имена констант:

Церера

Паллада

Юнона

Веста

Эрос

Гидальго

Ганимед

Амур

Икар

Значение 433u имеет константа Эрос

В программе нужно обратить внимание на операцию typeof, которая

формирует

по

имени

типа

НомерПланеты

объект

класса

System.Type,

представляющий тип операнда.

Соседние файлы в папке CSBasicCourse2ndedPodbelsky