Типи перерахувань (керівництво з програмування в c #), microsoft docs
В цій статті
Тип перерахування (званий також перерахуванням) надає ефективний спосіб визначення набору іменованих цілочисельних констант, який можна призначити змінної. Наприклад, припустимо, що потрібно визначити змінну, значення якого повинно представляти день тижня. Є тільки сім мають сенс значень, які може приймати змінна. Для визначення цих значень можна використовувати тип перерахування, який оголошений за допомогою ключового слова enum.
За замовчуванням базовим типом кожного елемента перерахування є int. Можна задати інший цілочисельний тип, використовуючи двокрапка, як показано в попередньому прикладі. Повний список можливих типів см. В розділі enum (довідник по C #).
Щоб перевірити основні числові значення шляхом приведення в базовий тип, як показано в наступному прикладі.
Далі вказані переваги використання enum замість числового типу.
Для клієнтського коду ясно задається, які значення допустимі для змінної.
У Visual Studio IntelliSense виводить список певних значень.
Якщо не вказати значення цих елементів в списку перечіслітеля, значення будуть автоматично збільшуватися на 1. В попередньому прикладі Days.Sunday має значення 0, Days.Monday має значення 1 і т. Д. Коли створюється новий об'єкт Days. він буде мати значення за замовчуванням Days.Sunday (0), тільки йому явно не привласнити значення. При створенні перерахування виберіть найбільш логічне використовується за умовчанням значення і надайте йому значення нуль. В результаті цього всі перерахування, якщо при їх створенні їм явно не поставити значення, матимуть за замовчуванням це значення.
Якщо змінна meetingDay має тип Days. їй можна (без явного приведення) привласнити тільки одне зі значень, визначених в Days. І якщо день зустрічі змінюється, можна призначити нове значення з Days змінної meetingDay.
Примітка
Змінної meetingDay можна привласнити будь довільне ціле значення. Наприклад, цей рядок коду не створює помилку: meetingDay = (Days) 42. Але цього робити не можна, оскільки неявно очікується, що змінна перерахування приймає одне із значень, що визначаються перерахуванням. Присвоєння змінній типу перерахування довільного значення пов'язано з великим ризиком виникнення помилок.
Елементам списку перечіслітеля типу перерахування можна привласнити будь-які значення, і можна також використовувати обчислені значення:
Типи перерахувань як бітові прапори
Тип перерахування можна використовувати для визначення бітових прапорів, завдяки чому екземпляр типу перерахування може зберігати будь-яку комбінацію значень, визначених в списку перечіслітеля. (Звичайно, деякі комбінації можуть не мати сенсу або бути неприпустимі в коді програми.)
Щоб створити перерахування бітових прапорів, потрібно застосувати атрибут System.FlagsAttribute і визначити значення так, щоб для них могли виконуватися бітові операції AND. OR. NOT і XOR. У перерахування бітових прапорів включите іменовану константу з нульовим значенням, що означає "прапори не встановлені". Не надавайте прапору нульове значення, якщо воно не означає "прапори не встановлені".
У наступному прикладі визначена інша версія перерахування Days. яка називається Days2. У Days2 є атрибут Flags. і кожному значенню присвоюється наступна ступінь числа 2. Це дозволяє створити змінну Days2 зі значенням Days2.Tuesday і Days2.Thursday.
Щоб встановити прапор на перерахування, використовуйте побітовий оператор OR. як показано в наступному прикладі:
Щоб визначити, чи встановлений конкретний прапор, використовуйте побітовий оператор AND. як показано в наступному прикладі:
Додаткові відомості про те, що необхідно враховувати при визначенні типів перерахувань за допомогою атрибута System.FlagsAttribute. см. в статті System.Enum.
Використання методів System.Enum для отримання і обробки значень перерахування
Всі перерахування є екземплярами типу System.Enum. Не можна успадкувати нові класи від класу System.Enum. але можна використовувати його методи для отримання і зміни даних про екземпляр перерахування.
Для отримання додаткової інформації див. System.Enum.
Можна також створити для перерахування новий метод, використовуючи метод розширення. Додаткові відомості див. У розділі Практичний посібник. Створення нового методу для перерахування.