Jak uzyskać enum nazwę z wartości w C#
Jednym z popularnych przypadków użycia enum jest uzyskanie enum nazwy z jej wartości.
Rozważmy przykład z prawdziwego świata, generalnie będziemy przechowywać wartości enum w bazie danych, tj. Będziemy przechowywać tylko wartości całkowite
Po odczytaniu wartości enum z bazy danych musimy ją przekonwertować z powrotem na jej nazwę enum.
Istnieją dwa sposoby uzyskania nazwy enum z wartości w C#
On this page
Rozwiązanie 1: Użycie Enum.GetName()
C# funkcja Enum.GetName()
przyjmuje dwa parametry enum typ i wartość i zwraca enum nazwę.
Weźmy przykład LogLevel
Enum
public enum LogLevel
{
ERROR=1,
WARN=2,
INFO=3,
DEBUG=4
}
Teraz przekażemy wartość enum do Enum.GetName()
, aby uzyskać nazwę enum
var enumValue = 1;
var enumName = Enum.GetName(typeof(LogLevel),enumValue);
Console.WriteLine($"The name of enum value: {enumValue} is {enumName}");
/**
Here is the output:
The name of enum value : 1 is ERROR
**/
Jeśli używasz wersji C# .Net 6
, możesz przekazać tylko wartość enum (cast to enum) do metody Enum.GetName()
.
/** get enum name from value in .Net 6**/
var enumName6 = Enum.GetName((LogLevel)enumValue);
Rozwiązanie 2: Użycie rzutowania typu
Innym sposobem jest, Konwersja wartości enum do członka eracji enumza pomocą rzutowania, a następnie użycie metody ToString()
.
Jest to prosty sposób, który nie używa żadnych C# Enum
wbudowanych funkcji.
Najpierw przekonwertuj wartość enum na członka enumeration, a następnie użyj metody ToString()
.
var enumValue = 2;
//Convert enum Value
var enumDisplayValue = (LogLevel)enumValue;
var enumName = enumDisplayValue.ToString();
Console.WriteLine($"The name of enum value: {enumValue} is {enumName}");
/**
Here is the output
The name of enum value : 2 is WARN
**/
Podsumowanie
W tym tutorialu poznaliśmy różne sposoby na uzyskanie wartości enum name w c#
- Poprzez przekazanie parametrów typu enum i wartości do metody
Enum.GetName()
- I używając rzutowania typu na odpowiadający mu typ enum