열거 형이 있습니다.
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")
답변
.NET (+ Core) 및 C # 7에 대한 최신 변경 사항을 감안할 때 가장 좋은 솔루션은 다음과 같습니다.
var ignoreCase = true;
Enum.TryParse("red", ignoreCase , out MyColours colour);
색상 변수는 Enum의 범위 내에서 사용할 수 있습니다.
답변
당신이 필요하다 Enum.Parse .
답변
OregonGhost의 답변 +1을 표시 한 다음 반복을 사용하려고 시도했지만 Enum.GetNames가 문자열을 반환하기 때문에 그것이 옳지 않다는 것을 깨달았습니다. Enum.GetValues를 원합니다.
public MyColours GetColours(string colour)
{
   foreach (MyColours mc in Enum.GetValues(typeof(MyColours)))
   if (mc.ToString() == surveySystem)
      return mc;
   return MyColors.Default;
}
답변
Enum.Parse이름에서 열거 형 값을 얻는 데 사용할 수 있습니다 . 를 사용하여 모든 값을 반복 Enum.GetNames할 수 있으며 int를 열거 형으로 캐스팅하여 int 값에서 열거 형 값을 가져올 수 있습니다.
예를 들면 다음과 같습니다.
public MyColours GetColours(string colour)
{
    foreach (MyColours mc in Enum.GetNames(typeof(MyColours))) {
        if (mc.ToString().Contains(colour)) {
            return mc;
        }
    }
    return MyColours.Red; // Default value
}
또는:
public MyColours GetColours(string colour)
{
    return (MyColours)Enum.Parse(typeof(MyColours), colour, true); // true = ignoreCase
}
후자는 값을 찾을 수 없으면 ArgumentException을 발생 시키며, 함수 내에서이를 잡아서 기본값을 리턴 할 수 있습니다.
답변
var color =  Enum.Parse<Colors>("Green");
