0Pricing
C# Academy · Урок

Определение и использование перечислений

Создавайте перечисления с явными и неявными значениями.

«Определение и использование перечислений» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Определение и использование перечислений
  2. Перечисления-флаги и побитовые комбинации
  3. Преобразование и разбор перечислений
  4. Перебор значений перечисления
← Назад к C# Academy