Перечисления в C#

Перечисления (enum) в С# подобны перечислениям в С++, и синтаксис их определения практически идентичен. Однако в точке использования необходимо полностью квалифицировать значения из перечисления, используя имя типа этого перечисления. Все перечисления основаны на лежащем в основе целочисленном типе int, если не указано иначе. Таким образом, перечисления также являются типами значений.

Лежащий в основе enum тип должен быть целочисленным, т.е. одним из следующих:
byte, sbyte, short, ushort, int, uint, long или ulong.

Каждая константа, определенная в перечислении, должна быть определена со значением, находящимся в пределах диапазона лежащего в основе типа. Если значение константы перечисления не указано явно, принимается значение по умолчанию, равное 0 (если это первая константа в перечислении) или значению предыдущей константы, увеличенному на 1. Ниже показан пример перечисления на базе long:

1
2
3
4
5
6
public enum Color : long
{
Red,
Green = 50,
Blue
}

Если в данном примере опустить двоеточие и ключевое слово long после идентификатора типа Color, то перечисление будет относиться к типу int. Обратите внимание, что значение Red равно 0, значение Green — 50, а значение Blue — 51.

Чтобы использовать это перечисление, напишите код вроде следующего:

1
2
3
4
static void Main()  {
Color color = Color.Red;
System.Console.WriteLine( "Color is {0}", color.ToString()  );
}

Если скомпилировать и запустить этот код на выполнение, можно увидеть, что в выводе на самом деле указывается имя перечисления, а не обычное значение 0. За всю эту “магию” отвечает реализация метода ToString () типа System.Enum.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100