我已经声明了枚举如下
public enum State
{
KARNATAKA = 1,
GUJRAT = 2,
ASSAM = 3,
MAHARASHTRA = 4,
GOA = 5
}
从外部来源,我得到的状态值为1或2或3或4或5。
根据我得到的值,我需要查找这个枚举并得到它的字符串。
例如:如果输入值是1,我需要返回字符串形式的卡纳塔克邦。同样,如果输入值是5,我需要返回字符串形式的果阿。
有没有一个简单的方法来获得字符串,而不使用CASE或IFELSE。
3条答案
按热度按时间w51jfk4q1#
您可以简单地使用
nameof
expression来获取枚举的名称、枚举值、属性、方法、类名等。使用nameof表达式的最快编译时解决方案。
返回枚举的文本。
nuypyhwy2#
您可以像下面这样将Description标记添加到枚举中
然后从枚举中获取指定的描述字符串,如下所示
如果您在注解中使用了相同数量状态,您仍然可以轻松地将其转换为枚举类型。
GetEnumDescription()
返回枚举名称的字符串。备注
由于对枚举的操作比字符串操作成本低,因此枚举的字符串值应仅限于显示目的,而在内部,您必须在逻辑中使用枚举本身。
获取枚举的字符串值的方法更可取。如果你在代码中的很多地方使用了枚举,并且你需要更改显示的文本,那么你只需要在一个地方更改文本。
比如说
假设你在整个项目中使用了这个enum,然后你意识到你的古吉拉特语拼写错误,如果你改变了enum本身的文本,你需要通过整个代码来改变它(谢天谢地,visual studio使它更容易),而如果你使用Description作为标签来显示,你只需要改变它。
或者
当你在空间的名称(你必须显示)。
查谟和克什米尔是印度的另一个邦。
你可以有缩写(这里“JK”)在枚举名称和完整的字符串与空间的描述。
7gyucuyw3#
我知道这是一个老问题,但是你可以写一个特定于枚举的扩展类/方法来获取文本值。这是基于上面的方法,但是,它消除了围绕枚举 Package 的样板代码,并简化了获取这些名称所需的代码。
这种方法的好处是,您可以直接从enum值使用此扩展,就像使用
nameof(MyEnum.Value1)
一样,或者您可以在使用nameof(...)
方法无法工作的对象的属性上使用它。下面是扩展代码:
使用方法: