C# Enum (перечисление) с примером
⚡ Умное резюме
В C# перечисления определяют именованный набор постоянных целочисленных значений, таких как дни недели, что упрощает чтение и сопровождение кода. Ключевое слово `enum` объявляет эти фиксированные константы один раз для повторного использования в программе.

Перечисление С#
Перечисление используется в любом языке программирования для определения постоянного набора значений. Например, дни недели можно определить как перечисление и использовать в любом месте программы. В C# перечисление определяется с помощью ключевого слова enum.
Давайте посмотрим пример того, как мы можем использовать ключевое слово enum.
В нашем примере мы определим перечисление под названием дни, которое будет использоваться для хранения дней недели. Для каждого примера мы изменим только основную функцию в нашем файле Program.cs.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { enum Days{Sun,Mon,tue,Wed,thu,Fri,Sat}; static void Main(string[] args) { Console.Write(Days.Sun); Console.ReadKey(); } } }
Code Объяснение:-
- «Перечисление» тип данных указывается для объявления перечисления. Имя перечисления — Days. Все дни недели указаны как значения перечисления.
- Наконец, функция console.write используется для отображения одного из значений перечисления.
Если приведенный выше код введен правильно и программа выполнена успешно, будет отображен следующий вывод.
Выход:
Из вывода вы можете видеть, что значение перечисления «Sun» отображается в консоли.
Зачем использовать перечисления (enums) в C#?
Перечисления делают программу более читабельной, безопасной и простой в сопровождении. Вместо того чтобы разбрасывать по коду непонятные числа, иногда называемые магическими числами, перечисление присваивает каждому значению описательное имя, указывающее на его назначение.
- Читаемость: Название типа Days.Fri гораздо понятнее, чем число 5, поэтому любой, кто читает код, сразу понимает его смысл.
- Тип безопасности: Переменная, объявленная с использованием перечисления (enum), может содержать только один из определенных элементов, что предотвращает появление недопустимых значений.ping дюйм
- Ремонтопригодность: Связанные константы находятся в одном месте, поэтому добавление или переименование значения приводит к согласованному обновлению всей программы.
- Привязка данных: Такие фреймворки, как WPF и ASP.NET, позволяют привязывать перечисление к выпадающему списку, что делает перечисления полезными при создании пользовательских интерфейсов.
Поскольку компилятор проверяет каждое присваивание на соответствие допустимым членам, перечисления также помогают выявлять ошибки на ранних стадиях, до запуска программы.
Присвоение пользовательских значений перечислению C#
По умолчанию C# присваивает первому члену перечисления значение 0 и увеличивает каждый последующий член на единицу. В приведенном выше перечислении Days значение Sun равно 0, Mon равно 1, а Sat равно 6. Вы можете переопределить эти значения по умолчанию, присвоив им явные числа.
- Явные значения: Использование перечисления Level {Low = 1, Medium = 5, High = 10} присваивает каждому элементу выбранное числовое значение вместо последовательности по умолчанию.
- Частичное задание: Если вы присвоите значение только некоторым членам, компилятор продолжит нумерацию, начиная с последнего присвоенного значения, для последующих членов.
- Основной тип: В перечислениях (enum) по умолчанию элементы хранятся как целые числа (int), но для экономии памяти или расширения диапазона можно использовать типы данных: byte, short или long.
Пользовательские значения полезны, когда числа должны соответствовать внешней системе, например, кодам баз данных или константам протокола, чтобы перечисление точно отражало реальные данные.
Как преобразовать перечисления C# в целые числа, строки и флаги
В C# часто возникает необходимость преобразовать значение перечисления в другую форму, например, сохранить его как число или прочитать из текста. Эти преобразования происходят несколькими стандартными способами.
- Преобразование перечисления в целое число: Явное приведение типа, например (int)Days.Wed, возвращает базовое целое число, что полезно для хранения данных или выполнения арифметических операций.
- Преобразование целого числа в перечисление: Преобразование в обратном направлении, например (Days)3, превращает число обратно в соответствующий элемент перечисления.
- Строка в перечисление: Методы Enum.Parse и более безопасный Enum.TryParse преобразуют имя, например, «Fri», в элемент Days.Fri без генерации ошибки, связанной с недопустимым текстом.
- Преобразование перечисления в строку: Вызов метода ToString для любого члена возвращает его имя, поэтому Days.Sun.ToString() возвращает «Sun» для отображения или вывода в консоль.
- Список участников: Методы Enum.GetValues и Enum.GetNames возвращают любое значение или имя, что полезно при заполнении меню или проверке введенных данных.
Если перечисление должно представлять собой комбинацию вариантов, а не один, примените атрибут Flags и присвойте каждому элементу степень двойки, например, 1, 2, 4 и 8. Затем вы можете комбинировать элементы с помощью побитового оператора ИЛИ и проверять наличие конкретного варианта с помощью метода HasFlag.
Эти методы преобразования позволяют перечислению беспрепятственно перемещаться между читаемыми именами, сохраненными числами и комбинированными наборами флагов, сохраняя при этомping Остальная часть программы является типобезопасной и простой в использовании.


