Перерахування (Enumeration) - це визначений користувачем цілочисельний тип, який дозволяє уточняти набір допустимих значень, і призначити кожному зрозуміле ім'я. Для оголошення перерахування використовується ключове слово enum. Загальна структура оголошення перерахування виглядає так:
enum [ім'я_перерахування] { [ім'я1], [ім'я2], … };
Наприклад, створимо перерахування Directions, яке буде відповідати напрямам руху:
enum Directions { Left, Right, Forward, Back };
Оголосивши таким чином перерахування, кожній символічно позначеній константі присвоюється цілочисельне значення, починаючи з 0 (Left = 0, Right = 1 ...). Це цілочисельне значення можна задавати і самому:
enum Directions { Left, Right = 5, Forward = 10, Back };
Back в цьому прикладі буде мати значення 11.
Приклад програми з використанням перерахування:
enum Directions { Left, Right, Forward, Back }; // оголошення перерахування
class Program
{
public static void GoTo(Directions direction)
{
switch (direction)
{
case Directions.Back:
Console.WriteLine("Go back");
break;
case Directions.Forward:
Console.WriteLine("Go forward");
break;
case Directions.Left:
Console.WriteLine("Turn left");
break;
case Directions.Right:
Console.WriteLine("Turn right ");
break;
}
}
static void Main(string[] args)
{
Directions direction = Directions.Forward;
GoTo(direction); // "Go forward"
Console.ReadKey();
}
}
Щоб отримати ціле значення певного елемента перерахування, досить цей елемент явно привести до цілого типу:
enum Directions : byte { Left, Right, Forward, Back };
class Program
{
static void Main(string[] args)
{
Console.WriteLine((int)Directions.Forward); // 2
Console.ReadKey();
}
}
За умовчанням як цілого типу для enum використовується int. Цей тип можна змінити на будь-який інший цілий тип (крім char), вказавши після імені перерахування необхідний тип і розділивши двокрапкою:
enum Directions : byte { Left, Right, Forward, Back };
Навіщо потрібні перерахування і де вони використовуються
Головні переваги, які нам дають перерахування це:
- Гарантія того, що змінним будуть призначатися допустимі значення із заданого набору;
- Коли ви пишете код програми в Visual Studio, завдяки засобу IntelliSense буде випадати список з допустимими значеннями, що дозволить заощадити деякий час, і нагадати, які значення можна використовувати;
- Код стає читабельнішим, коли в ньому присутні зрозумілі імена, а не ні про що не говорять числа.
Перерахування дуже широко використовуються в самій бібліотеці класів .NET. Наприклад, при створенні файлового потоку (FileStream) використовується перерахування FileAccess, за допомогою якого ми вказуємо з яким режимом доступу відкрити файл (читання / запис).
Домашнє завдання
Створіть клас Кішка. У кішки буде властивість «рівень ситості» і метод «з'їсти щось». Створіть перерахування Їжа (риба, миша ...). Кожен вид їжі повинен по-різному змінювати рівень ситості.