Как да получа enum име от стойност в C#
Един от популярните случаи на използване на enum е получаването на enum име от неговата стойност.
Разгледайте един пример от реалния свят, като цяло в базата данни ще съхраняваме enum стойности, т.е. ще съхраняваме само целочислени стойности
И след като прочетем стойността enum от базата данни, трябва да я преобразуваме обратно в нейното име enum.
Съществуват два начина за получаване на enum име от стойност в C#
On this page
Решение 1: Използване на Enum.GetName()
C# функцията Enum.GetName()
приема два параметъра enum type и value и връща името enum.
Да вземем за пример LogLevel
Enum
public enum LogLevel
{
ERROR=1,
WARN=2,
INFO=3,
DEBUG=4
}
Сега ще предадем стойността enum на Enum.GetName()
, за да получим името 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
**/
Ако използвате C# версия на .Net 6
, можете да подадете само enum стойност (cast to enum) на метода Enum.GetName()
.
/** get enum name from value in .Net 6**/
var enumName6 = Enum.GetName((LogLevel)enumValue);
Решение 2: Използване на хвърляне на типове
Друг начин е да, Конвертирате enum стойност в enumчлен на ерация, като използвате леене на тип, и след това използвате ToString()
метод.
Това е прост начин, при който не се използват никакви вградени функции на C# Enum
.
Първо конвертирайте enum стойността в enumeration member и след това използвайте 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
**/
Обобщение
В този урок научихме различни начини за получаване на стойност на име enum в c#
- Чрез предаване на параметрите enum type и value на метода
Enum.GetName()
- И чрез използване на type casting към съответния enum тип