在Enum中搜索一个字符串并返回Enum?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)

我有一个枚举:

public enum MyColours
{
    Red,
    Green,
    Blue,
    Yellow,
    Fuchsia,
    Aqua,
    Orange
}

我有一个字符串:

string colour = "Red";

我想要能够返回:

MyColours.Red

从:

public MyColours GetColour(string colour)

到目前为止我有:

public MyColours GetColours(string colour)
{
    string[] colours = Enum.GetNames(typeof(MyColours));
    int[]    values  = Enum.GetValues(typeof(MyColours));
    int i;
    for(int i = 0; i < colours.Length; i++)
    {
        if(colour.Equals(colours[i], StringComparison.Ordinal)
            break;
    }
    int value = values[i];
    // I know all the information about the matched enumeration
    // but how do i convert this information into returning a
    // MyColour enumeration?
}

正如你所看到的,我有点卡住了。无论如何按价值选择和枚举。就像是:

MyColour(2) 

会导致

MyColour.Green
提问于
用户回答回答于

检查出System.Enum.Parse:


enum Colors {Red, Green, Blue}

// your code:
Colors color = (Colors)System.Enum.Parse(typeof(Colors), "Green");

用户回答回答于

可以将int转换为枚举

(MyColour)2

还有Enum.Parse的选项

(MyColour)Enum.Parse(typeof(MyColour), "Red")

扫码关注云+社区