我已将枚举声明如下
public enum State
{
KARNATAKA = 1,
GUJRAT = 2,
ASSAM = 3,
MAHARASHTRA = 4,
GOA = 5
}
从外部来源,我得到的状态值为1或2或3或4或5。
根据我得到的值,我需要查找此枚举并获取其字符串。
对于Ex:如果输入值为1,我需要将KARNATAKA作为字符串返回。同样,如果输入值为5,我需要将GOA作为字符串返回。
使用CASE或IFELSE是否可以轻松获取字符串。
答案 0 :(得分:3)
您可以简单地使用lst1 <- split(df, df$x)
expression来获取枚举的名称,枚举值,属性,方法,类名等。
使用nameof表达式的最快的编译时解决方案。
返回枚举的文字。
nameof
答案 1 :(得分:1)
您可以将描述标签添加到您的枚举中,如下所示
public enum State
{
[Description("Karnataka")]
KARNATAKA = 1,
[Description("Gujarat")]
GUJRAT = 2,
[Description("Assam")]
ASSAM = 3,
[Description("Maharashtra")]
MAHARASHTRA = 4,
[Description("Goa")]
GOA = 5
}
然后从枚举中获取指定的Desription字符串,如下所示
State stateVal = State.GOA;
string stateName = GetEnumDescription(stateVal);
如果您的状态与您提到的评论一样,您仍然可以轻松地将其转换为枚举类型。
int stateVal = 2;
string stateName = GetEnumDescription((State)stateVal);
GetEnumDescription()
返回Enumerations名称的字符串。
public static string GetEnumDescription(Enum enumVal)
{
System.Reflection.MemberInfo[] memInfo = enumVal.GetType().GetMember(enumVal.ToString());
DescriptionAttribute attribute = CustomAttributeExtensions.GetCustomAttribute<DescriptionAttribute>(memInfo[0]);
return attribute.Description;
}
注意强>
由于enum上的操作比字符串操作成本低,因此enum的字符串值应仅限于显示目的,而在内部则必须在逻辑中使用enum本身。
获取枚举字符串值的方法更为可取。好像您已经在代码中的许多地方使用了枚举,并且您需要更改显示的文本,您只需要在一个地方更改文本。
例如,
假设你在整个项目中使用了这个枚举,然后你意识到你的古吉拉特语的拼写是错误的,如果你改变了enum的文本,你需要通过整个代码改变它(谢天谢地,视觉工作室让它变得容易一些)如果您使用描述作为标签进行显示,则只需要更改它。
或
当您在名称中留空时(您必须显示)。
EG。 “查谟和克什米尔”是印度的另一个州。
您可以在枚举名称中包含缩写(此处为“JK”),并在说明中包含空格的完整字符串。