📜  从显示名称 c# 中获取枚举值(1)

📅  最后修改于: 2023-12-03 14:49:25.891000             🧑  作者: Mango

从显示名称 C# 中获取枚举值

在C#中,有时候需要通过枚举值的显示名称来获取对应的枚举值。这在一些需要动态获取枚举值的应用中特别有用。下面介绍一些方法,以便程序员们能够更好地处理枚举值的显示名称和枚举值之间的转换。

1.使用Enum.Parse方法

使用Enum.Parse方法可以直接将枚举值的显示名称转换为对应的枚举值。示例代码如下:

enum CarMake
{
    Ford,
    Toyota,
    Honda
}

CarMake myCarMake = (CarMake)Enum.Parse(typeof(CarMake), "Ford");

首先要指定要转换的枚举类型,typeof(CarMake);然后传递要转换的字符串 "Ford",该字符串将被转换为CarMake.Ford枚举值。需要注意,该方法的参数区分大小写,所以输入的字符串必须与定义的枚举值名称相同。

2.使用Enum.TryParse方法

使用Enum.TryParse方法可以以更安全的方式将枚举值的显示名称转换为对应的枚举值。示例代码如下:

bool success = Enum.TryParse("Ford", out CarMake myCarMake);

Enum.TryParse方法中,第一个参数是要转换的字符串,第二个参数是转换后的枚举值。该方法返回一个bool值,表示转换是否成功。如果转换成功,第二个参数就会被赋值,否则第二个参数的值将是默认值。

3.使用Description属性

在C#中,可以为枚举值添加Description属性来存储枚举值的显示名称。可以使用反射来获取该属性的值。示例代码如下:

enum CarMake
{
    [Description("Ford")]
    Ford,
    [Description("Toyota")]
    Toyota,
    [Description("Honda")]
    Honda
}

public static string GetEnumDescription(Enum value)
{
    FieldInfo field = value.GetType().GetField(value.ToString());
 
    DescriptionAttribute[] attributes = (DescriptionAttribute[])field.GetCustomAttributes(typeof(DescriptionAttribute), false);
 
    return attributes.Length > 0 ? attributes[0].Description : value.ToString();
}

GetEnumDescription是一个通用的方法,可以用来获取任何枚举类型的Description属性值。需要注意的是,该方法需要使用System.ComponentModel命名空间中的DescriptionAttribute类。

结论

以上是一些用于在C#中获取枚举值的显示名称的方法。使用Enum.Parse方法可以快速地将字符串转换为枚举值,但要注意大小写。使用Enum.TryParse方法可以更安全地进行转换,而且不需要考虑大小写问题。使用Description属性可以更灵活地处理枚举值的显示名称。程序员可以根据需要选择适合自己的方法。