Перечисление – определяемый пользователем целочисленный тип, который позволяет задавать набор допустимых значений, и назначить каждому понятное имя. Для объявления перечисления используется ключевое слово enum (от англ. enumeration).
Преимущества перечислений:
— гарантия того, что переменным будут назначаться допустимые значения из указанного набора;
— код становится читабельнее, когда в нем присутствуют понятные имена, а не числа;
— в Visual Studio благодаря средству IntelliSense будет выпадать список с допустимыми значениями типа, что позволит сэкономить время и напомнить, какие значения можно использовать.
Перечисления широко используются в самой библиотеке классов .NET. Например, при создании файлового потока (FileStream) используется перечисление FileAccess, при помощи которого мы указываем с каким режимом доступа открыть файл (чтение/запись).
Общая структура объявления перечисления:
enum [имя_перечисления] { [имя1], [имя2], … };
Создадим перечисление S, которое будет соответствовать четырем сторонам света:
enum S {север, востокt, юг, запад};
В таком перечислении каждой символически обозначаемой константе присваивается цело число, начиная с 0 (север = 0, восток = 1 …).
Чтобы получить целое значение определенного элемента перечисления, достаточно этот элемент явно привести к целому типу:
Console.WriteLine((int) S.юг); // ответ 2
По умолчанию в качестве целого типа для enum используется int. Этот тип можно изменить на любой другой целый тип (кроме char), указав после имени перечисления необходимый тип и разделив двоеточием:
enum Sides : byte {север, восток, юг, запад};
Пример программы с использованием перечисления:
using System; namespace ПоискКлада { enum S { север, восток, юг, запад }; class Program { public static void GoTo(S side, int way) { switch (side) { case S.север: Console.WriteLine("Идти на север, {0} метров", way); break; case S.восток: Console.WriteLine("Идти на восток, {0} метров", way); break; case S.юг: Console.WriteLine("Идти на юг, {0} метров", way); break; case S.запад: Console.WriteLine("Идти на запад, {0} метров", way); break; } } static void Main(string[] args) { GoTo(S.восток, 50); GoTo(S.юг, 20); GoTo(S.запад, 30); Console.WriteLine("Выкопай клад!"); Console.ReadKey(); } } }
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
![]() |
![]() |
![]() |
![]() |