Керівництво c #, перерахування
Перерахування (enumeration) - це визначений користувачем цілочисельний тип. Коли ви оголошуєте перерахування, то спеціфіціруете набір допустимих значень, які можуть приймати екземпляри перерахувань. Але мало того - цим значенням ще повинні бути присвоєні імена, зрозумілі для користувачів. Якщо десь в коді спробувати привласнити примірнику перерахування значення, що не входить в список допустимих, компілятор видасть помилку.
Визначення перерахування може в довгостроковій перспективі заощадити масу часу і позбавити від головного болю. Існує, принаймні, три явних вигоди від застосування перерахувань замість простих цілих:
Як згадувалося, перерахування полегшують супровід коду, гарантуючи, що змінним будуть присвоюватися тільки легітимні, очікувані значення.
Перерахування роблять код ясніше, що дозволить отримувати доступ до цілим значенням, називаючи їх осмисленими іменами замість малозрозумілих "магічних" чисел.
Перерахування полегшують введення вихідного коду. Коли ви збираєтеся привласнити значення примірнику перечислимого типу, то інтегроване середовище Visual Studio за допомогою засобу IntelliSense відображає спливає список з допустимими значеннями, що дозволяє заощадити кілька натискань клавіш і нагадати про можливий вибір значень.
де ім'я - це ім'я типу перерахування, а спісок_перечісленія - список ідентифікаторів, що розділяється комами.
Слід особливо підкреслити, що кожна символічно позначається константа в перерахуванні має ціле значення. Проте неявні перетворення перечислимого типу у вбудовані цілочисельні типи і назад в C # не визначені, а значить, в подібних випадках потрібно явне приведення типів. Крім того, приведення типів потрібно при перетворенні двох перелічуваних типів. Але оскільки перерахування позначають цілі значення, то їх можна, наприклад, використовувати для управління оператором вибору switch або ж оператором циклу for.
Для кожної наступної символічно позначається константи в перерахуванні задається ціле значення, яке на одиницю більше, ніж у попередньої константи. За замовчуванням значення першої символічно позначається константи в перерахуванні дорівнює нулю.
Давайте розглянемо приклад використання перерахувань:

Значення однієї або декількох символічно позначаються констант в перерахуванні можна задати за допомогою ініціалізатор. Для цього достатньо вказати після символічного позначення окремої константи знак рівності і ціле значення. Кожної наступної константі присвоюється значення, яке на одиницю більше значення попередньої ініціалізованої константи. У наведеному вище прикладі инициализируется константа ShortName.
За замовчуванням в якості базового для перерахувань вибирається тип int, проте перерахування може бути створено будь-якого цілочисельного типу, за винятком char. Для того щоб вказати інший тип, окрім int, досить помістити цей тип після імені перерахування, відокремивши його двокрапкою.
Перерахування дуже широко застосовуються у всіх бібліотеках базових класів .NET. Наприклад, в ADO.NET безліч перерахувань використовується для позначення стану з'єднання з базою даних (наприклад, відкрито воно або закрито) і стану рядки в DataTable (наприклад, є вона зміненої, нової або отсоединенной). Тому в разі застосування будь-яких перерахувань слід завжди пам'ятати про наявність можливості взаємодіяти з парами "ім'я / значення" в них за допомогою членів System.Enum.