gpt4 book ai didi

C# 在枚举中使用数字

转载 作者:IT王子 更新时间:2023-10-29 04:02:57 29 4
gpt4 key购买 nike

这是一个有效的枚举

public enum myEnum
{
a= 1,
b= 2,
c= 3,
d= 4,
e= 5,
f= 6,
g= 7,
h= 0xff
};

但这不是

public enum myEnum
{
1a = 1,
2a = 2,
3a = 3,
};

有没有办法在枚举中使用数字?我已经有了可以从枚举中填充下拉菜单的代码,所以它会非常方便

最佳答案

C# 中根本没有标识符可以以数字开头(出于词法/解析原因)。考虑向您的枚举值添加一个 [Description] 属性:

public enum myEnum
{
[Description("1A")]
OneA = 1,
[Description("2A")]
TwoA = 2,
[Description("3A")]
ThreeA = 3,
};

然后您可以从这样的枚举值中获取描述:

((DescriptionAttribute)Attribute.GetCustomAttribute(
typeof(myEnum).GetFields(BindingFlags.Public | BindingFlags.Static)
.Single(x => (myEnum)x.GetValue(null) == enumValue),
typeof(DescriptionAttribute))).Description

根据下面 XSA 的评论,我想进一步说明如何使它更具可读性。最简单的是,您可以只创建一个静态(扩展)方法:

public static string GetDescription(this Enum value)
{
return ((DescriptionAttribute)Attribute.GetCustomAttribute(
value.GetType().GetFields(BindingFlags.Public | BindingFlags.Static)
.Single(x => x.GetValue(null).Equals(value)),
typeof(DescriptionAttribute)))?.Description ?? value.ToString();
}

是否要将其作为扩展方法取决于您,在上面的实现中,如果未提供 [DescriptionAttribute],我已将其回退到枚举的正常名称。

现在您可以通过以下方式获取枚举值的描述​​:

myEnum.OneA.GetDescription()

关于C# 在枚举中使用数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3916914/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com