Hogyan lehet a `int` -t `enum` -re vetíteni C#-ban
Ahhoz, hogy a int
-t a enum
-re öntse C#-ban, kifejezetten írja be a enum
változót integerre.
SampleEnum sample = (SampleEnum)IntVariable;
Tartalomjegyzék
1. megoldás: A enum
változó explicit típusátvitelének használata
Nézzünk végig egy példát, hogy jobban megértsük.
Van egy enum
típusunk, a Days
, amely a hétfőtől kezdődő hétköznapokat jelöli.
public enum Days
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
int dayInteger = 6;
Days day = (Days) dayInteger;
Console.WriteLine(day.ToString());//Monday
De van egy probléma a fenti int
és enum
közötti átalakítással.
Mi van akkor, ha a int
érték nem létezik a C# Enum
változóban?
int dayInteger = 100;
Days day = (Days) dayInteger;
Console.WriteLine(day.ToString());//100
Nem dob semmilyen kivételt.
Tehát jobb, ha ellenőrizzük, hogy a int
érték létezik-e a Enum
címen, mielőtt egész számra öntjük.
Ellenőrizze, hogy létezik-e egész szám a enum
változóban vagy sem
A C# Enum
összes egész szám értékének kinyeréséhez a Enum.GetValues
metódust használhatjuk.
Konvertáljuk őket C# listává, így a list.Contains()
módszerrel ellenőrizhetjük, hogy az adott egész szám létezik-e a enum
változóban.
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");
}
A Enum.IsDefined()
módszerrel ellenőrizhetjük, hogy a konvertált egész érték létezik-e az adott enum
típusban.
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. megoldás: Használja a Enum.ToObject()
módszert
Használhatjuk a Enum.ToObject()
módszert, a int
értéket enum
értékké alakíthatjuk C# nyelven.
var enumValue = Enum.ToObject(typeof(Days),1);
Console.WriteLine(enumValue);
//Tuesday
Console.WriteLine(enumValue.GetType());
//Days