Шрифт:
Тип, используемый для каждого элемента в перечне, по умолчанию отображается в System.Int32. Такое поведение при необходимости тоже можно изменить. Например, если вы хотите, чтобы соответствующее хранимое значение EmpTyре было byte, а не int, вы должны написать следующее.
Замечание. Перечни в C# могут определяться в унифицированной форме для любого из числовых типов (byte, sbyte, short, ushort, int, uint, long или ulong). Это может быть полезно при создании программ для устройств с малыми объемами памяти, таких как КПК или сотовые телефоны, совместимые с .NET.
Установив диапазон и тип хранения для перечня, вы можете использовать его вместо так называемых "магических чисел". Предположим, что у вас есть класс, определяющий статическую функцию с единственным параметром EmpType.
Этот метод можно вызвать так.
Замечание. При ссылке на значение перечня всегда следует добавлять префикс имени перечня (например, использовать EmpType.Grunt, а не просто Grunt).
Базовый класс System.Enum
Особенностью перечней .NET является то, что все они неявно получаются из System.Enum. Этот базовый класс определяет ряд методов, которые позволяют опросить и трансформировать перечень. В табл. 3.9 описаны некоторые из таких методов, и все они являются статическими.
Таблица 3.9. Ряд статических членов System.Enum
Член | Описание |
---|---|
Format | Преобразует значение данного типа перечня в эквивалентное строковое представление в соответствии с указанным форматом |
GetName GetNames | Возвращает имя (или массив имен) для константы с указанным значением |
SetUnderlyingType | Возвращает тип данных, используемый для хранения значений данного перечня |
GetValues | Возвращает массив значений констант данного перечня |
IsDefined | Возвращает признак существования в данном перечне константы с указанным значением |
Parse | Преобразует строковое представление имен или числовых значений одной или нескольких констант перечня в эквивалентный объект перечня |
Статический метод Enum.Format можно использовать с флагами форматирования, которые рассматривались выше при обсуждении System.Console. Например, можно извлечь строку c именем (указав G), шестнадцатиричное (X) или числовое значение (D, F и т.д.).
В System.Enum также определяется статический метод GetValues. Этот метод возвращает экземпляр System.Array (мы обсудим этот объект немного позже), в котором каждый элемент соответствует паре "имя-значение" данного перечня. Для Примера рассмотрите следующий фрагмент программного кода.