Как получить имя enum из значения в C#

Одним из популярных случаев использования enum является получение имени enum из его значения.

Рассмотрим пример из реального мира, обычно мы храним в базе данных значения enum, т.е. только целочисленные значения

И после чтения значения enum из базы данных мы должны преобразовать его обратно в его имя enum.

Существует два способа получить имя enum из значения в C#

On this page

Решение 1: Использование Enum.GetName()

C# Enum.GetName() функция принимает два параметра enum тип и значение и возвращает имя 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.GetName() только значение enum (приведенное к enum).


/** get enum name from value in .Net 6**/
var enumName6 = Enum.GetName((LogLevel)enumValue);

Решение 2: Использование приведения типов

Другой способ заключается в том, чтобы преобразовать значение enum в член enumс помощью приведения, а затем использовать метод ToString().

Это простой способ, который не использует никаких C# Enum встроенных функций.

Сначала преобразуйте значение enum в член enumeration, а затем используйте метод 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#

  1. Передавая enum параметры типа и значения в метод Enum.GetName()
  2. И используя приведение типа к соответствующему типу enum