2009-05-01 4 views
1

다음과 같이 내가 (MSDN 예제에서 가져온) 열거 형을 말해봐 다음과 같이열거 평가

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; 

그때 사용할 수있는 코드입니다 :

int today = (int)Days.Sun; 

질문 :

열거 형을 평가할 수 있습니까? 값이 "Sun"인 변수 Day가 있다고 가정 해보십시오. 일 수 있습니다. 오늘 평가할 수 있습니다. 순?

감사합니다.

일례에 매달리지 말고 비교 등을 사용해야한다고 말하지 마십시오. 더 컴팩트하므로 배열의 사용법을 열거 형으로 대체하려고합니다. 날이 .... 배열 키에

+0

그분들의을 (지금, 당신은 왜 ... 이런 식으로 요일이 나를 넘어 주문할 것) 빠른 테스트보다 적은 시간에 당신을위한 질문에 대답했을 것이다 이 질문을 썼다. – Noldorin

+0

나는 의견이 맞지 않지만 귀중한 의견을 주셔서 감사합니다. – sarsnake

+0

@gnoxima : 제 잘못입니다. 나는 네가 캐스팅에 대해서 이야기하고 있다고 생각했다. 사실 Enum.Parse 메서드는 그렇게 명확하지 않습니다. – Noldorin

답변

8

맞죠 당신이있어 말하는 :

string day = "Sun"; 

을하면 값 Days.Sun을 다시 얻으려면?

는이 경우 사용

string day = "Sun"; 
Day day = (Day) Enum.Parse(typeof(Days), day); 
+0

+1 문자열에서 구문 분석하고 열거하는 올바른 방법입니다. –

+0

+1 문자열에서 열거 형을 구문 분석하는 올바른 방법입니다. –

+0

아 !! 죄송합니다 이중 주석에 대해 - 나는 오타를 수정하고 주석을 달아서 고치려고했으나 그래서 첫 번째 것을 지우지 않았습니다.내가 할 수 있으면 나는 두 번 upvoted했을 : –

3

을 평가하는 곳

에서 myArray가 [날] 예, 그렇게 할 수 : 그래서 내가 무엇을 찾고 있어요 것은 기본적으로 배열과 유사한 열거에서 값을 검색 할 수있는 기능입니다. enum과 기본 유형 사이에서 자유롭게 형변환 할 수 있습니다.

using System; 

class Program 
{ 
    static void Main() 
    { 
     // prints "zero" 
     Console.WriteLine((Foo)0); 
     // prints "1" 
     Console.WriteLine((int)Foo.one); 
    } 
} 

enum Foo { zero, one, two }; 
0

인터넷 용 네,하지만 문자열이 this

1

같은 것을해야 당신은 또한뿐만 아니라 문자열 값을 구문 분석 할 수 있습니다. 앤드류는 말처럼 Enum.Parse

[TestFixture] 
public class EnumParsingSO 
{ 
    public enum Days 
    { 
     Sat = 1, 
     Sun, 
     Mon, 
     Tues 
    } 

    [Test] 
    public void EnumFromString() 
    { 
     Days expected = Days.Mon; 
     int expectedInt = 3; 
     Days actual = (Days)Enum.Parse(typeof(Days), "Mon"); 

     Assert.AreEqual(expected, actual); 
     Assert.AreEqual(expectedInt, (int)actual); 
    } 
} 
1

를 사용하여, 당신은 그것의 기본 유형으로 열거에서 캐스팅 할 수 있습니다. 당신은뿐만 아니라 둘 사이 언 박스도 할 수 있고, 암시 적 변환은 열거 형에 상수 0에서있다 :

using System; 

enum Demo { Foo, Bar, Baz }; 

class Test 
{ 
    static void Main() 
    { 
     int i = 2; 
     object o = i; 
     // Unboxing from int to Demo 
     Demo d = (Demo) o; 
     Console.WriteLine(d); 

     o = Demo.Baz; 
     // Unboxing from Demo to int 
     i = (int) o; 
     Console.WriteLine(i); 

     // Implicit conversion of 0 
     d = 0; 
     Console.WriteLine(d); 
    } 
} 
+0

질문은 내가 믿는 것보다 간단합니다. 그의 하루 변수는 이미 enum 유형입니다. – Noldorin

+0

+1 이것은 좋은 지적입니다. –

+0

좋아, 그게 내가 오늘 만난 코멘트가있는 또 다른 버그 야. 나는 Tim Robinson의 대답에이 글을 게시했다. – Noldorin

0

당신이 할 수있는 예, 당신은 단지 각 열거 값에 대한 기본 정수 값을 제공해야합니다. 귀하의 예제에서 :

enum Days { 
    Sat=1, 
    Sun=2, 
    Mon=3, 
    Tue=4, 
    Wed=5, 
    Thu=6, 
    Fri=7 
}; 

+0

각 값에 숫자를 할당해야한다는 데 동의하지만 필수는 아닙니다. –

+0

얘들 아! 그것의 다만보기! :) – sarsnake