📅  最后修改于: 2023-12-03 14:57:16.491000             🧑  作者: Mango
在C#中,我们可以通过以下方式获取枚举的名称:
var enumName = Enum.GetName(typeof(MyEnum), MyEnum.Value);
其中,MyEnum
是我们定义的枚举类型,Value
是该枚举类型中的某个值。这个方法会返回这个值所属的枚举类型的名称,如果该值不存在于该枚举类型中,则返回null
。
如果我们需要获取枚举中所有的名称,可以使用Enum.GetNames
方法:
var enumNames = Enum.GetNames(typeof(MyEnum));
这个方法会返回一个string数组,其中包含该枚举类型中所有的名称。
同时,我们可以使用typeof(MyEnum).GetEnumNames()
方法来获取所有枚举名称的字符串数组,该方法与Enum.GetNames()
方法的效果是一样的。
需要注意的是,Enum.GetName
和Enum.GetNames
方法都是静态方法,可以直接通过枚举类型进行访问。
在使用枚举类型的时候,我们也可以通过ToString()
方法来获取该枚举值的名称:
var enumName = MyEnum.Value.ToString();
需要注意的是,如果我们定义的枚举类型有对应的Description
特性,那么我们可以利用这个特性来获取枚举值的自定义名称。下面是一个示例:
public enum MyEnum
{
[Description("第一个值")]
Value1,
[Description("第二个值")]
Value2,
[Description("第三个值")]
Value3
}
public static class Extensions
{
public static string GetDescription(this Enum value)
{
var field = value.GetType().GetField(value.ToString());
if (field == null) return null;
var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
return attribute?.Description;
}
}
var enumName = MyEnum.Value1.GetDescription(); // 返回 "第一个值"
上面的示例中,我们为枚举类型MyEnum
的每个枚举值添加了Description
特性,然后定义了一个扩展方法GetDescription
来获取这个特性的值,这样我们就可以在需要的时候获取自定义的枚举值名称。需要注意的是,GetDescription
方法是一个扩展方法,我们需要先引入了Extensions
类才能够进行调用。
总结一下,获取枚举名称在C#中非常简单,我们可以通过Enum.GetName
、Enum.GetNames
、枚举值的ToString()
方法等方式来获取。如果需要获取自定义的枚举值名称,则可以使用Description
特性来实现。