C# — Как преобразовать типа int в enum?

Рассмотрим как преобразовать типа int в enum в C#, для различных версий .NET Framework и .NET Core.

.NET Framework 2.0 и выше:

Для преобразования типа int в тип enum в .NET Framework 2.0 и выше, можно использовать методы Enum.ToObject и Enum.IsDefined. Первый используется для преобразования типа int в тип enum, второй же используется для проверки, является ли целое число допустимым значением для типа enum.

Рассмотрим пример:

enum DaysOfTheWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

int dayAsInt = 3;

if (Enum.IsDefined(typeof(DaysOfTheWeek), dayAsInt))
{
    DaysOfTheWeek dayAsEnum = (DaysOfTheWeek)Enum.ToObject(typeof(DaysOfTheWeek), dayAsInt);
    // Используйте dayAsEnum как enum
}
else
{
    // Число не допустимо к преобразованию, ошибку можно обработать тут
}Code language: JavaScript (javascript)

.NET Framework 1.0 и 1.1:

В этих версиях .NET Framework методы Enum.ToObject и Enum.IsDefined недоступны. Чтобы преобразовать тип int в тип enum, можно использовать приведение типов:

enum DaysOfTheWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

int dayAsInt = 3;
DaysOfTheWeek dayAsEnum = (DaysOfTheWeek)dayAsInt;

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

Добавить комментарий