Как да превърнем `int` в `enum` в C#


За да превърнете int в enum в C#, изрично въведете cast на променливата enum в integer.

SampleEnum sample = (SampleEnum)IntVariable;

Table of Contents

Решение 1: Използване на изрично присвояване на типа на променливата enum

Нека разгледаме един пример, за да го разберем по-добре.

Имаме тип enum, наречен Days, който представя дните от седмицата, започващи от понеделник.

public enum Days
{
        Monday,  
        Tuesday,  
        Wednesday,  
        Thursday,  
        Friday,  
        Saturday,  
        Sunday
}

int dayInteger = 6;
Days day = (Days) dayInteger;
Console.WriteLine(day.ToString());//Monday

Но има проблем с горното ** преобразуване наint в enum **.

Какво става, ако стойността int не съществува в променливата Enum на C#?

int dayInteger = 100;
Days day = (Days) dayInteger;
Console.WriteLine(day.ToString());//100

Това няма да доведе до изключение.

Затова е по-добре да проверите дали стойността int съществува в Enum, преди да я превърнете в цяло число.

Проверете дали в променливата enum съществува цяло число или не

За да получим всички целочислени стойности в C# Enum, можем да използваме метода Enum.GetValues.

Конвертираме ги в списък на C#, за да можем да използваме метода list.Contains(), за да проверим дали дадено цяло число съществува в променливата enum.

var intValue = 100;
var enumValues = Enum.GetValues(typeof(Days)).Cast<int>().ToList();

if(enumValues.Contains(intValue)){
  Console.WriteLine("We can Cast int to Enum");  
   Days day = (Days) intValue;
}else{
  Console.WriteLine("Cannot Cast int to Enum");
}

Можем да използваме метода Enum.IsDefined(), за да проверим дали преобразуваната целочислена стойност съществува в дадения тип enum.

var enumValue = (Days)1;

if (Enum.IsDefined(typeof(Days), enumValue)){
   Console.WriteLine("The converted int to enum value is",enumValue);
}else{
   Console.WriteLine("Cannot Convert int to Enum",enumValue);
}

Решение 2: Използвайте метода Enum.ToObject()

Можем да използваме метода Enum.ToObject(), да преобразуваме стойността на int в enum в C#.

var enumValue = Enum.ToObject(typeof(Days),1);

Console.WriteLine(enumValue);

//Tuesday

Console.WriteLine(enumValue.GetType());
//Days

Avatar
Arunkumar Gudelli

I am One among a million Software engineers of India. I write beautiful markup.I make the Web useful.

Next
Previous