Определение и использование перечислений
Создавайте перечисления с явными и неявными значениями.
«Определение и использование перечислений» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.
Что такое перечисление?
enum — это именованный набор связанных констант. Он делает код более понятным, заменяя магические числа осмысленными именами.
using System;
enum Direction { North, East, South, West }
class Program {
static void Main() {
Direction d = Direction.East;
Console.WriteLine(d);
}
}Объявление перечисления
Объявите перечисление с помощью ключевого слова enum и перечислите его элементы. По умолчанию первый элемент имеет значение 0, следующий — 1 и так далее.
using System;
enum Day { Mon, Tue, Wed }
class Program {
static void Main() {
Console.WriteLine((int)Day.Mon);
Console.WriteLine((int)Day.Wed);
}
}Пользовательские базовые значения
Можно назначить явные числовые значения. Элементы без назначенного значения продолжают последовательность, начиная с предыдущего значения.
using System;
enum Status { Active = 1, Paused = 5, Stopped }
class Program {
static void Main() {
Console.WriteLine((int)Status.Stopped);
}
}Выбор базового типа
По умолчанию перечисления используют int, но можно выбрать другой целочисленный тип, например byte, чтобы сэкономить место.
using System;
enum Level : byte { Low = 1, High = 200 }
class Program {
static void Main() {
Console.WriteLine((byte)Level.High);
}
}Перечисления в переменных
Используйте тип перечисления так же, как любой другой тип, для переменных, параметров и полей.
using System;
enum Color { Red, Green, Blue }
class Program {
static void Describe(Color c) {
Console.WriteLine("Color is " + c);
}
static void Main() {
Describe(Color.Green);
}
}Перечисления в операторе выбора
Перечисления отлично сочетаются с switch, обеспечивая понятное ветвление с обработкой всех вариантов.
using System;
enum Signal { Stop, Go, Caution }
class Program {
static void Main() {
Signal s = Signal.Go;
switch (s) {
case Signal.Stop: Console.WriteLine("Halt"); break;
case Signal.Go: Console.WriteLine("Move"); break;
default: Console.WriteLine("Slow"); break;
}
}
}Сравнение значений перечисления
Значения перечисления можно сравнивать с помощью == и операторов порядка, основываясь на их базовых числовых значениях.
using System;
enum Priority { Low, Medium, High }
class Program {
static void Main() {
Console.WriteLine(Priority.High > Priority.Low);
}
}Значение перечисления по умолчанию
Неинициализированное перечисление равно элементу со значением 0. Рекомендуется сделать значение 0 разумным вариантом по умолчанию, например «Нет».
using System;
enum Mode { None, Fast, Slow }
class Program {
static void Main() {
Mode m = default;
Console.WriteLine(m);
}
}Вывод имён элементов перечисления
Вызов ToString или вывод перечисления отображает имя элемента, что гораздо понятнее необработанного числа.
using System;
enum Fruit { Apple, Banana, Cherry }
class Program {
static void Main() {
Console.WriteLine(Fruit.Banana.ToString());
}
}Перечисления повышают понятность кода
По сравнению с передачей отдельных целых чисел перечисления документируют намерение и предотвращают недопустимые значения.
using System;
enum Size { Small, Medium, Large }
class Program {
static int PriceFor(Size s) {
return s == Size.Large ? 12 : 8;
}
static void Main() {
Console.WriteLine(PriceFor(Size.Large));
}
}Где объявлять перечисления
Перечисления могут находиться на уровне пространства имён или внутри класса. Размещайте их рядом с кодом, который их использует.
using System;
class Program {
enum Phase { Start, Run, End }
static void Main() {
Console.WriteLine(Phase.Run);
}
}Быстрая проверка
Проверьте, насколько хорошо Вы понимаете перечисления.
Итоги
enum определяет набор именованных констант и повышает понятность кода по сравнению с магическими числами. Элементы по умолчанию получают значения 0, 1, 2 и так далее, но можно назначить явные значения и даже изменить базовый целочисленный тип.
Перечисления отлично работают в переменных, операторах выбора и сравнениях, при выводе отображают имена элементов и по умолчанию соответствуют элементу со значением 0.
Часто задаваемые вопросы
Урок «Определение и использование перечислений» бесплатный?
Да — полный текст урока «Определение и использование перечислений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.
Чему я научусь в уроке «Определение и использование перечислений»?
Создавайте перечисления с явными и неявными значениями. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Определение и использование перечислений»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение и использование перечислений
- Перечисления-флаги и побитовые комбинации
- Преобразование и разбор перечислений
- Перебор значений перечисления