2 ways to convert/cast int to enum in C#
Es gibt 2 Möglichkeiten zum Konvertieren oder Casting int
zu enum
in C#
- Mit C# explizites Typ-Casting.
- Verwendung der Methode
Enum.ToObject()
Auf dieser Seite
Lösung 1: Explizites Typ-Casting in C# verwenden
Der einfache Weg, um int
in enum
in C# zu konvertieren, ist die Verwendung von explizitem Type Casting.
Lassen Sie uns ein Beispiel durchgehen, um es besser zu verstehen.
Wir haben einen enum
typ namens LogLevel
, der verschiedene Ebenen der Protokollierung darstellt.
public enum LogLevel
{
ERROR=1,
WARN=2,
INFO=3,
DEBUG=4
}
int logEnumInteger = 1;
LogLevel errorEnum = (LogLevel) logEnumInteger;
Console.WriteLine(errorEnum.ToString());//ERROR
Das explizite Casting erfolgt durch Einfügen des enum
typ in Klammern vor den Wert int
gesetzt wird.
Aber es gibt ein Problem mit der obigen C# int
zu enum
umwandlung.
Was ist, wenn der Wert int
nicht in der C#-Variable Enum
vorhanden ist?
int logEnumInteger = 100;
LogLevel unknownEnum = (LogLevel) logEnumInteger;
Console.WriteLine(unknownEnum.ToString());//100
Es wird keine Ausnahme ausgelöst.
Es ist also besser zu prüfen, ob der Wert int
in C# Enum
existiert, bevor er in eine Ganzzahl umgewandelt wird.
Prüfen Sie, ob ein Integer-Wert existiert oder nicht in C# enum
variable
Um alle Integer-Werte in C# Enum
zu erhalten, können wir die Methode Enum.GetValues
verwenden.
Konvertieren Sie sie in die Liste C#
, so dass wir mit der Methode list.Contains()
prüfen können, ob die angegebene ganze Zahl in der enum
variable existiert.
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");
}
Wir können die Methode Enum.IsDefined()
verwenden, um zu prüfen, ob der konvertierte Integer-Wert im angegebenen enum
typ.
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);
}
Lösung 2: Verwenden Sie die Methode Enum.ToObject()
Wir können die Methode C# Enum.ToObject()
verwenden, um den Wert int
in enum
in C#.
var enumValue = Enum.ToObject(typeof(LogLevel),1);
Console.WriteLine(enumValue);
//ERROR
Console.WriteLine(enumValue.GetType());
//LogLevel