Все перечисления в С# являются потомками базового класса System.Enum, который снабжает их некоторыми полезными методами.
Статический метод GetName позволяет получить символическое имя константы по ее номеру, например:
Console.WriteLine(Enum.GetName(typeof(Flags), 8)); // b4
Console.WriteLine(Enum.GetName(typeof(Боец.Воинское_Звание),1));// сержант
ПРИМЕЧАНИЕ
Операция typeof возвращает тип своего аргумента (см. раздел «Рефлексия» в главе 12).
Статические методы GetNames и GetValues формируют, соответственно, массивы
имен и значений констант, составляющих перечисление, например:
Array names = Enum.GetNames(typeof(Flags));
Console.WriteLine("Количество элементов в перечислении: " + names.Length);
foreach (string elem in names)
Console.Write(" " + elem);
Array values = Enum.GetValues(typeof(Flags));
foreach (Flags elem in values)
Console.Write(" " + (byte) elem);
Статический метод IsDefined возвращает значение true, если константа с заданным символическим именем описана в указанном перечислении, и false в противном случае, например:
if (Enum.IsDefined(typeof(Flags), "b5"))
Console.Writeline("Константа с именем b5 существует");
else Console.WriteLine("Константа с именем b5 не существует");
Статический метод GetUnderlyingType возвращает имя базового типа, на котором построено перечисление. Например, для перечисления Flags будет получено System.Byte:
Console.WriteLine(Enum.GetUnderlyingType(typeof(Flags)));