C#の列挙型を文字列に変換する方法は何ですか?

C#では、ToString()メソッドを使用して、列挙型を文字列に変換することができます。以下は一つの例です:

enum Color
{
    Red,
    Blue,
    Green
}

Color color = Color.Blue;
string colorString = color.ToString();

Console.WriteLine(colorString); // 输出 "Blue"

Enum.GetName()メソッドを使用して列挙型のメンバーの名前を取得することもできます。

enum Color
{
    Red,
    Blue,
    Green
}

Color color = Color.Green;
string colorString = Enum.GetName(typeof(Color), color);

Console.WriteLine(colorString); // 输出 "Green"

重要なことは、列挙型のメンバーの名前と文字列値は異なるということです。列挙型メンバーの文字列値を取得する必要がある場合は、Enum.GetValues()メソッドを使用して列挙を反復処理し、ToString()メソッドを使用して各列挙メンバーを文字列に変換します。以下は例です:

enum Color
{
    [Description("红色")]
    Red,
    [Description("蓝色")]
    Blue,
    [Description("绿色")]
    Green
}

Color color = Color.Blue;
string colorString = GetEnumDescription(color);

Console.WriteLine(colorString); // 输出 "蓝色"

// 获取枚举成员的描述
public static string GetEnumDescription(Enum value)
{
    FieldInfo field = value.GetType().GetField(value.ToString());

    DescriptionAttribute attribute = field.GetCustomAttributes(typeof(DescriptionAttribute), false)
                                          .SingleOrDefault() as DescriptionAttribute;

    return attribute != null ? attribute.Description : value.ToString();
}

上記の例では、各列挙型メンバーに説明を追加するためにDescriptionAttribute属性を使用しました。その後、リフレクションを使用して列挙型メンバーの説明値を取得しました。

bannerAds