2009-06-16 5 views
0

다음 코드가 있습니다.Enum에 캐스팅

private Enum MyEnum 
{ 
    VALUE1=5, VALUE2=4, VALUE3=3, VALUE4=2, VALUE5=1 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["EnumValue"] = "VALUE1"; 
    MyEnum test = (MyEnum) Session["EnumValue"]; 
} 

페이지로드시 캐스팅 후에 'test'= 'VALUE2'변수의 값이 있습니다.

나는 test = 'VALUE1'을 얻길 기대하고있다. 당신은 단순히 열거에 다시 문자열 값을 캐스팅 할 수없는 코드

+0

어떤 언어입니까? –

+0

It 's C#/ASP.NET –

답변

6

문제 있나요, 당신은 그것을 구문 분석 할 수 있습니다

MyEnum enumValue = (MyEnum) Enum.Parse(typeof(MyEnum), (string)Session["EnumValue"]); 
+0

좋습니다. 코드에 오류가 표시되지 않습니다. 정상적인 행동입니까? – Ashok

+1

일반적으로 Joop의 대답처럼 문자열을 사용하지 않고 열거 형 값을 사용합니다. –

2

당신이 열거와 함께하지 문자열로 작업하는 이유 ? 좋아요 :

private Enum MyEnum 
{ 
    VALUE1=5, VALUE2=4, VALUE3=3, VALUE4=2, VALUE5=1 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["EnumValue"] = MyEnum.VALUE1; 
    MyEnum test = (MyEnum) Session["EnumValue"]; 
} 
+0

아마도 ASP 클래식 3.0이 세션에서 문자열을 지원하지 않았을 때 2001 년의 코드일지도 모릅니다 :-) #historylesson –

+0

거의 2 년 전의 답변에 좋은 코멘트가 있습니다.) – Joop

+0

그것은 메타 - 히스토리로 추측합니까? ASP Classic은 상업용 코딩에 대한 소개 였기 때문에 내 기억에 불타 버렸습니다. –