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属性を使用しました。その後、リフレクションを使用して列挙型メンバーの説明値を取得しました。