2014-05-12 2 views
-2

나는 내가 UserDefinedString이 열거 형에 문자열이 들어 있는지 확인하십시오.

Enum eNUM 
{ 
    one,Two,Three 
} 

있습니다. 예 : Four 사용자가 정의한 문자열이 eNUm에 있는지 여부를 확인하고 싶습니다. 나는 또한 시도

eNUM _num; 
if (Enum.TryParse<eNUM>("UserDefinedString", out _num)) 
{ 
    //do some thing 
} 

으로 시도 :

if (Enum.IsDefined(typeof(eNUM), "UserDefinedString")) 

+2

'Enum.IsDefined'이 경우에 true를 돌려줍니다 같은 LINQ 기능을 사용하여 키를 확인할 수 있습니다 시도 string은 Enum에서 끝납니다. '일하지 않는다 '는 것은 무엇을 의미합니까? –

+2

"나에게 효과가 없다"는 것은 무엇을 의미합니까? 오류가 있습니까? 결과가 예상과 다른가요? 그렇다면, 무엇? – Rik

답변

0

첫 번째 예제는 작동 :

if (Enum.TryParse<eNUM>("Four", out _num)) 
{ 
    //do some thing 
} 
else 
{ 
    // invalid enum value 
} 

Four와이를 호출 할 때, 당신은 예를 들어, 열거는 소문자 값을 포함 알고있는 경우 비교하기 전에 케이스를 강제로 인생을 더 쉽게 만들 수 있습니다 else 지점에 도착합니다. Two으로 전화를 걸면 작동합니다.

케이싱을 무시하려면 TryParse의 두 번째 매개 변수를 true으로 설정할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다 ..... – Singh

+0

@Singh : 천만에요. 당신이 여기 새로 왔기 때문에, 그 대답이 당신의 질문에 가장 잘 답변 한 경우 그 중 하나를 표시하는 것을 잊지 마십시오. –

1

구문 분석 할 때 그것이 정확한 일치해야합니다 나를 위해 작동하지 않습니다.

Enum eNUM 
{ 
    one, two, three ... 
} 

... 

eNUM num; 
string findThisValue = "OnE"; // Odd casing... 
if (Enum.TryParse(findThisValue.ToLower(), out num)) 
{ 
    // Do something with num 
} 
+0

TryParse 앞에 열거 형을 모두 대문자 또는 소문자로 다음 ToLower()로 만드는 것이 가장 좋습니다. – Murphy

+0

고마워 .... .... – Singh

1

Enum.GetNames(typeof(eNUM)); 

이 당신에게 문자열로 열거의 모든 값을 얻을 것이다, 당신은 포함 또는 상관

관련 문제