2013-07-01 3 views
3

아래에 설명 된대로 매우 기본적인 코드를 발견했으며이를 C# Windows Forms 솔루션에서 사용할 수 없습니다. System.Type '에서 변환 할 수 없습니다 :Enum.TryParse의 기본 사용이 작동하지 않습니다.

  • 에 가장 적합한 오버로드 된 메서드'(문자열 출력 문자열) System.Enum.TryParse는 '

  • 인수 한 일부 잘못된 인수가 : 나는 오류를 얻었다 문제입니다 문자열 '

    public enum PetType 
    { 
        None, 
        Cat = 1, 
        Dog = 2 
    } 
    
    string value = "Dog"; 
    PetType pet = (PetType)Enum.TryParse(typeof(PetType), value); 
    
    if (pet == PetType.Dog) 
    { 
        ... 
    } 
    

'에서 '이해가되지 않습니다. 오류는 모두 Enum.TryParse 행에 있습니다. 어떤 생각?

감사합니다.

+2

Enum.TryParse (typeof (PetType), out value); – leppie

+0

http://msdn.microsoft.com/en-us/library/dd783499.aspx – ken2k

+0

TryParse는 구문 분석이 성공한 경우 열거 형을 반환합니다. 결과를 얻으려면 Out 매개 변수로 PetType을 전달해야합니다. –

답변

13

문서에서 알 수 있듯이 Enum.TryParse<TEnum>은 부울 속성을 반환하는 제네릭 메서드입니다. 잘못 사용하고 있습니다.

string value = "Dog"; 
PetType pet; 
if (Enum.TryParse<PetType>(value, out pet)) 
{ 
    if (pet == PetType.Dog) 
    { 
     ... 
    } 
} 
else 
{ 
    // Show an error message to the user telling him that the value string 
    // couldn't be parsed back to the PetType enum 
} 
+0

고마워. 예를 들어 내 웹 사이트 소스가 좋지 않은 것 같습니다. – Bronzato

+1

@ Bronzato 아마도 Enum.Parse를 사용했을 것입니다. 'TryParse'는'Parse'와 꽤 다릅니다. – Nolonar

+0

err .. '밖으로'허튼 소리는 나를 다시 잡았어. –

4

주의해야 할 첫 번째 일은 TryParse가 아니라 Type 당신의 열거의 부울을 반환한다는 것입니다 : 그것은 결과를 저장하기 위해 out 매개 변수를 사용합니다.

out 매개 변수는 enumType 인 변수를 가리켜 야합니다.

2

난 당신이 Enum.Parse를 사용하는, 표준 생각 : 구문 분석, 그렇지 않은 경우는 false, 성공했을 경우

PetType pet = (PetType)Enum.Parse(typeof(PetType), value); 

TryParse에만 true를 반환합니다.

관련 문제