2010-06-17 2 views
2

쿼리 문자열에서 열거 형 값을 가져올 것입니다. "Return Enum 들어오는 문자열 값을 기준으로 한 상수

string myEnumStringValue = Request["somevar"]; 

myEnumStringValue이"0 "이 될 수 :

Enum MyEnum 
{ 
    Test1, 
    Test2, 
    Test3 
} 

내가 들어오는 쿼리 문자열에서 값을 잡아 갈거야, 그래서 : 예를 들어

내가이 열거가 있다고 할 수 있습니다 1 ","2 "

해당 문자열 값을 기반으로 실제 Enum 상수를 다시 얻어야합니다.

내가 가서 문자열에 걸리는 방법을 만든 다음 case 문

case "0": 
    return MyEnum.Test1; 
    break; 

을 수행하지만,이 작업을 수행하는 쉬운 이상 매끄러운 방법이있을거야 수 있을까?

답변

8

이름이나 값을 올바른 enum 값으로 변환 할 수있는 Enum.Parse을 살펴보십시오.

결과를 얻었 으면 결과를 MyEnum으로 캐스팅하고 ToString()을 호출하여 상수의 이름을 가져옵니다.

return ((MyEnum)Enum.Parse(typeof(MyEnum), Request["somevar"])).ToString(); 
+0

입력 내용은 1, 2 또는 3입니다. – Dykam

+0

실제로 Enum.Parse가이를 처리합니다. (비록 당신이 그것을 올렸을 때 나는 나의 대답을 부드럽게하지 않았을지도 모른다!) –

+0

네, 맞습니다; 나는 그것을 몰랐다. – SLaks

2

내장되어 있습니다 기능이 작업 :

MyEnum convertedEnum = (MyEnum) Enum.Parse(typeof(MyEnum), myEnumStringValue); 당신은 그것의 정수 값을 얻기 위해 문자열을 구문 분석 할 필요가

+0

그의 입력은 1, 2 또는 3입니다. – Dykam

+0

하아, 열거 같아요. 구분 처리 : 새로운 것을 배웠습니다. :) –

2

에서, Enum 형식으로 값을 캐스트, 다음 열거를 얻을 수 이 같은 값 이름 :

string myEnumStringValue = ((MyEnum)int.Parse(Request["somevar"])).ToString(); 

편집 : 또는 당신은 단순히 0123를 호출 할 수 있습니다. 그러나 이것은 조금 더 빨라야합니다.

+0

Enum.Parse()와 int.Parse)? 예 : ((MyEnum) Enum.Parse (typeof (MyEnum), Request [ "somevar"])). ToString(); – Zachary

+0

@Zacharay :'int.Parse'는 약간 빠릅니다. – SLaks

관련 문제