0Pricing
C# Academy · Урок

Перечисления и [Flags]

Определяйте перечисления с явными значениями и базовыми типами, безопасно преобразуйте и разбирайте их, а также моделируйте комбинируемые параметры с помощью [Flags].

«Перечисления и [Flags]» — бесплатный урок C# Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.

Обзор перечислений

Цель: Использовать перечисления для именованных констант и [Flags] для комбинируемых параметров.

  • Имена сопоставляются с числами
  • Базовый тип (по умолчанию int)
  • Приведение, разбор и проверка
  • Побитовое объединение с помощью [Flags]

Базовое перечисление

Перечисления — это именованные константы. Можно вывести имя или привести значение к базовому числу.

using System;

public enum OrderStatus
{
  Pending = 0,
  Processing = 1,
  Shipped = 2,
  Delivered = 3,
  Cancelled = 4
}

public class Program
{
  public static void Main(string[] args)
  {
    OrderStatus s = OrderStatus.Processing;
    Console.WriteLine("Status = " + s);
    Console.WriteLine("Numeric = " + (int)s);
  }
}

Базовый тип и приведение

Можно выбрать базовый тип (short, byte и т. д.). Приведение чисел не проверяет корректность значения.

using System;

// Choose underlying type if needed (default is int)
public enum HttpCode : short
{
  Ok = 200,
  NotFound = 404
}

public class Program
{
  public static void Main(string[] args)
  {
    short code = (short)HttpCode.Ok; // cast to number
    HttpCode fromNum = (HttpCode)404; // cast from number (no validation)
    Console.WriteLine("code=" + code);
    Console.WriteLine("fromNum=" + fromNum);
  }
}

Разбор и проверка

Используйте TryParse перечисления для чтения из текста, а IsDefined — для проверки числовых значений.

using System;

public enum Color
{
  Red = 1, Green = 2, Blue = 3
}

public class Program
{
  public static void Main(string[] args)
  {
    Color c;
    bool ok = Enum.TryParse<Color>("green", true, out c); // ignore case
    Console.WriteLine("Parsed? " + ok + " value=" + c);

    // Validate a numeric value before casting
    int raw = 4;
    bool valid = Enum.IsDefined(typeof(Color), raw);
    Console.WriteLine("Is 4 a defined Color? " + valid);
  }
}

[Флаги] на практике

Добавьте атрибут [Флаги] и назначьте значения, являющиеся степенями двойки. Объединяйте их с помощью |, проверяйте с помощью &, удаляйте с помощью ~ и &.

using System;

[Flags]
public enum FileAccessMode
{
  None  = 0,
  Read  = 1,   // 0001
  Write = 2,   // 0010
  Exec  = 4    // 0100
}

public class Program
{
  public static void Main(string[] args)
  {
    FileAccessMode m = FileAccessMode.Read | FileAccessMode.Write; // combine
    Console.WriteLine("Mode = " + m); // prints "Read, Write"

    // Test a flag (two common patterns)
    bool canWrite = (m & FileAccessMode.Write) != 0;
    Console.WriteLine("Can write? " + canWrite);

    // Remove a flag
    m = m & ~FileAccessMode.Write;
    Console.WriteLine("After remove: " + m);
  }
}

Советы по перечислениям

Советы:

  • Задавайте значения явно и сохраняйте их неизменными.
  • Для [Флаги] используйте степени двойки и добавьте значение Отсутствуют = 0.
  • Проверяйте входные данные с помощью TryParse перечисления и IsDefined.
  • Не используйте обычные целые числа в общедоступных интерфейсах; предпочитайте перечисления.

Значение атрибута флагов

Быстрая проверка: какой атрибут позволяет перечислению представлять объединяемые побитовые параметры, например «чтение | запись»?

Повторение

Повторение: используйте перечисления для понятных констант с проверкой типов. Безопасно разбирайте и проверяйте значения. Для объединяемых параметров добавьте [Флаги] и используйте побитовые операторы для установки, проверки и удаления флагов.

Часто задаваемые вопросы

Урок «Перечисления и [Flags]» бесплатный?

Да — полный текст урока «Перечисления и [Flags]» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.

Чему я научусь в уроке «Перечисления и [Flags]»?

Определяйте перечисления с явными значениями и базовыми типами, безопасно преобразуйте и разбирайте их, а также моделируйте комбинируемые параметры с помощью [Flags]. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.

Сколько времени занимает урок «Перечисления и [Flags]»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Структуры: семантика значений и шаблон неизменяемости
  2. Типы, подобные записям, и равенство на основе значений
  3. Перечисления и [Flags]
← Назад к C# Academy