2 veidi, kā konvertēt/pārvērst int uz enum programmā C#
Ir 2 veidi, kā konvertēt vai atveidot int
uz enum
programmā C#
- Izmantojot C# tiešo tipa atveidi.
- Izmantojot
Enum.ToObject()
metodi
On this page
Risinājums Nr. 1: Izmantojot C# tiešo tipa atveidi
Vienkāršs veids, kā konvertēt int
uz enum
c# valodā ir izmantot tiešo tipa atveidi.
Lai to labāk izprastu, aplūkosim piemēru.
Mums ir enum
tips ar nosaukumu LogLevel
, kas apzīmē dažādus žurnālu reģistrēšanas līmeņus.
public enum LogLevel
{
ERROR=1,
WARN=2,
INFO=3,
DEBUG=4
}
int logEnumInteger = 1;
LogLevel errorEnum = (LogLevel) logEnumInteger;
Console.WriteLine(errorEnum.ToString());//ERROR
Skaidrā kastēšana tiek veikta, ievietojot enum
tips iekavās pirms int
vērtības.
Bet ir problēma ar iepriekš minēto C# int
uz enum
konvertēšanu.
Ko darīt, ja C# Enum
mainīgajā nav int
vērtības?
int logEnumInteger = 100;
LogLevel unknownEnum = (LogLevel) logEnumInteger;
Console.WriteLine(unknownEnum.ToString());//100
Izņēmums netiks mests.
Tāpēc labāk ir pārbaudīt, vai int
vērtība eksistē C# Enum
pirms tās pārrēķināšanas uz veselu skaitli.
Pārbaudiet, vai vesels skaitlis pastāv vai ne C# enum
mainīgajā
Lai iegūtu visas veselu skaitļu vērtības mainīgajā C# Enum
, mēs varam izmantot Enum.GetValues
metodi.
Pārvērst tās C#
sarakstā, lai mēs varētu izmantot list.Contains()
metodi, lai pārbaudītu, vai dotais veslais skaitlis pastāv enum
mainīgajā.
var intValue = 100;
var enumValues = Enum.GetValues(typeof(LogLevel)).Cast<int>().ToList();
if(enumValues.Contains(intValue)){
Console.WriteLine("We can Cast C# int to Enum");
LogLevel loggingValue = (LogLevel) intValue;
}else{
Console.WriteLine("Cannot Cast C# int to Enum");
}
Mēs varam izmantot Enum.IsDefined()
metodi, lai pārbaudītu, vai konvertētā veselā skaitļa vērtība eksistē dotajā sarakstā enum
tipā.
var enumValue = (LogLevel)1;
if (Enum.IsDefined(typeof(LogLevel), enumValue)){
Console.WriteLine("The converted int to enum value is",enumValue);
}else{
Console.WriteLine("Cannot Convert int to Enum",enumValue);
}
2. risinājums: Izmantojiet Enum.ToObject()
metodi
Mēs varam izmantot C# Enum.ToObject()
metodi, konvertēt int
vērtību uz enum
c# valodā.
var enumValue = Enum.ToObject(typeof(LogLevel),1);
Console.WriteLine(enumValue);
//ERROR
Console.WriteLine(enumValue.GetType());
//LogLevel