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

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

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы говорили о том, как узнать размер каталога на C#. В данной статье я бы хотел рассказать про перечисления в C#. Отличительной особенностью данного типа данных является то, что множество значений данного типа разработчик задаёт сам. Перечисление (enum) базируется на одном из целочисленных типов, по умолчанию на "int", т.е. занимает 4 байта (хотя для оптимизации можно сделать, чтобы данный тип данных базировался, к примеру, на "byte"). Литеральные значения для enum задаются не в виде чисел, а в виде идентификаторов, которые сам разработчик перечисляет при определении этого типа данных.

Приведу пример перечисления:

enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

Обращаю ваше внимание, что "Day" — это название типа, а не переменная. В фигурных скобках перечисляются значения в виде литералов. Литералы идут без кавычек, т.е. это не строки, а идентификаторы значений. Получить идентификатор значения можно следующим образом:

Day lastDay = Day.Saturday;
Console.WriteLine(lastDay.ToString()); // выйдет Saturday

Поскольку "enum" базируется на целочисленном типа, то возможно явное преобразование (нумерация начинается с нуля):

Day lastDay = (Day)6;
Console.WriteLine(lastDay.ToString()); // выйдет Saturday

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

enum MyColors { Black = 50, White, Red = 80, Green, Brown = 100 };
Console.WriteLine((int)MyColors.Black); // 50
Console.WriteLine((int)MyColors.White); // 51
Console.WriteLine((int)MyColors.Red); // 80
Console.WriteLine((int)MyColors.Green); // 81
Console.WriteLine((int)MyColors.Brown); // 100

Проверим, что тип данных "MyColors" занимает 4 байта:

Console.WriteLine(sizeof(MyColors)); // 4

Если 4 байтов много, то можно задать меньший размер. Если мы хотим, чтобы данный тип данных занимал 2 байта ("short") — нужно написать так:

enum MyColors : short { Black = 50, White, Red = 80, Green, Brown = 100 };
Console.WriteLine(sizeof(MyColors)); // 2

"Enum" обычно применяется, когда нужно задать какое-то значение (одно из нескольких). Целочисленные значения использовать неудобно по той причине, что они неинформативны. Это всё, что нужно знать о перечислениях.

В данной небольшой статье вы узнали, что такое перечисления в C# и как с ними работать.

На связи был Алексей Гулынин, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *