0Pricing
C# Academy · Урок

Преобразование и разбор перечислений

Преобразуйте перечисления в целые числа и строки и обратно.

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

Перечисление в целое число

Приведите перечисление к его базовому типу с помощью (int), чтобы получить числовое значение.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        int n = (int)Level.High;
        Console.WriteLine(n);
    }
}

Целое число в перечисление

Приведите число обратно к типу перечисления. Значение не обязано соответствовать объявленному элементу, поэтому при необходимости выполните проверку.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level l = (Level)2;
        Console.WriteLine(l);
    }
}

Проверка с помощью IsDefined

Enum.IsDefined подтверждает, что число или имя соответствует существующему элементу, прежде чем Вы начнёте ему доверять.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Console.WriteLine(Enum.IsDefined(typeof(Level), 1));
        Console.WriteLine(Enum.IsDefined(typeof(Level), 9));
    }
}

Перечисление в строку

ToString возвращает имя элемента, что удобно для отображения и журналирования.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Console.WriteLine(Level.Medium.ToString());
    }
}

Разбор строки

Enum.Parse преобразует имя обратно в значение перечисления, но вызывает исключение, если имя недопустимо.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level l = (Level)Enum.Parse(typeof(Level), "High");
        Console.WriteLine(l);
    }
}

Обобщённый Parse

Обобщённая форма Enum.Parse<T> не требует приведения типа и выглядит понятнее.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level l = Enum.Parse<Level>("Medium");
        Console.WriteLine(l);
    }
}

Безопасный разбор с помощью TryParse

Enum.TryParse возвращает логическое значение, указывающее на успех, вместо вызова исключения, поэтому безопаснее работает с пользовательским вводом.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        if (Enum.TryParse<Level>("Low", out var result))
            Console.WriteLine("Parsed: " + result);
    }
}

Обработка некорректного ввода

Если разбор завершается неудачей, TryParse возвращает отрицательный результат, чтобы Вы могли корректно отреагировать.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        bool ok = Enum.TryParse<Level>("Unknown", out var result);
        Console.WriteLine(ok ? result.ToString() : "Invalid input");
    }
}

Разбор без учёта регистра

Передайте положительное логическое значение, чтобы не учитывать регистр при разборе текста, предоставленного пользователем.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level l = Enum.Parse<Level>("high", true);
        Console.WriteLine(l);
    }
}

TryParse лучше IsDefined для имён

При разборе имён TryParse за один вызов выполняет и проверку допустимости, и преобразование.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        string input = "Medium";
        if (Enum.TryParse<Level>(input, out var lvl) && Enum.IsDefined(typeof(Level), lvl))
            Console.WriteLine("Valid: " + lvl);
    }
}

Обратимые преобразования

Можно преобразовать перечисление в int и обратно либо в строку и обратно, если значения допустимы.

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level start = Level.High;
        int num = (int)start;
        Level back = (Level)num;
        Console.WriteLine(start == back);
    }
}

Быстрая проверка

Проверьте свои знания о преобразованиях и разборе перечислений.

Итоги

Выполняйте приведение между перечислением и базовым целым числом с помощью (int) и (EnumType), а для проверки используйте Enum.IsDefined. ToString возвращает имя элемента.

Преобразуйте имена обратно с помощью Enum.Parse<T> (вызывает исключение) или более безопасного Enum.TryParse<T> (возвращает логическое значение), при необходимости игнорируя регистр.

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

Урок «Преобразование и разбор перечислений» бесплатный?

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

Чему я научусь в уроке «Преобразование и разбор перечислений»?

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

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

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

Сколько времени занимает урок «Преобразование и разбор перечислений»?

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

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

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

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

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