How to getenum name from value in C#
enum のよくある使用例として、値からenum の名前を取得するものがあります。
実世界の例を考えてみましょう。一般的には、enum の値をデータベースに保存します。つまり、整数値のみを保存します。
そして、データベースからenum の値を読み取った後、それをenum の名前に変換する必要があります。
C#で値からenum 名を取得する方法は2つあります**。
On this page
解決策1Enum.GetName()
C#Enum.GetName()
関数は、2つのパラメータ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 の値(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 メンバに変換し、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
**/
まとめ
このチュートリアルでは、C#でenum の名前の値を取得するさまざまな方法について学びました。
1.Enum.GetName()
メソッドにenum 型と値のパラメータを渡すことによって
2.そして、それを対応するenum 型に型キャストすることによって。