需要从枚举类翻译帮助

时间:2009-11-05 01:34:36

标签: c#

我的枚举类PlayerPosition包含足球场上的所有位置(QB,HB等)。我很难“翻译”(不确定这个词,但我希望你能理解)从#它存储为字符串的枚举,可以通过我的总机读取。现在,我已经在这个方法中使用了一个“foreach”循环(称为Calc),但是我不能在这个方法中使用“foreach”循环,因为这个方法已经处于循环中以处理到下一个玩家的问题。 Anywho,这是我提出的代码。我在切换括号中尝试了Enum.GetNames(typeof(PlayerPosition)),但它没有用。

    foreach (string p in Enum.GetNames(typeof(PlayerPosition)))
                {
                    switch (p)
                    {
                        case "QB":

                        ...

4 个答案:

答案 0 :(得分:4)

PlayerPosition position = PlayerPosition.Quarterback;
string name = position.ToString();

编辑修改了Guffa建议的从Enum.GetNameToString()的更改。

答案 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 answerthis question,以便将友好名称与枚举值相关联