我的枚举类PlayerPosition包含足球场上的所有位置(QB,HB等)。我很难“翻译”(不确定这个词,但我希望你能理解)从#它存储为字符串的枚举,可以通过我的总机读取。现在,我已经在这个方法中使用了一个“foreach”循环(称为Calc),但是我不能在这个方法中使用“foreach”循环,因为这个方法已经处于循环中以处理到下一个玩家的问题。 Anywho,这是我提出的代码。我在切换括号中尝试了Enum.GetNames(typeof(PlayerPosition)),但它没有用。
foreach (string p in Enum.GetNames(typeof(PlayerPosition)))
{
switch (p)
{
case "QB":
...
答案 0 :(得分:4)
PlayerPosition position = PlayerPosition.Quarterback;
string name = position.ToString();
编辑修改了Guffa建议的从Enum.GetName
到ToString()
的更改。
答案 1 :(得分:3)
不需要将enum转换为switch语句的字符串,而是使用switch语句和foreach循环中的枚举值。
//this code was not tested, but hopefully you get the idea...
foreach(PlayerPosition pp in PlayerPosition.GetValues())
{
case PlayerPosition.Quarterback:
...
break;
...
}
通过采用多态性的方法完全消除switch语句。如何做到这一点取决于你在switch语句的主体中究竟要做什么。
答案 2 :(得分:1)
改为循环枚举值,并仅在需要实际字符串时将它们转换为字符串:
foreach (PlayerPosition p in Enum.GetValues(typeof(PlayerPosition))) {
switch (p) {
case PlayerPosition.QB: ...
}
string positionText = p.ToString();
}
答案 3 :(得分:1)
将{Description>属性添加到您的枚举中,查看highest ranked answer至this question,以便将友好名称与枚举值相关联