2010-12-29 2 views
22

난 MSDN에서 숙지 약Int32.TryParse()는 실패시 0을 반환합니다 - 성공 또는 실패?

이 방법 반환 될 경우 32 비트 정수 상기 변환이 성공한다면 등가 값 (S)에 포함되는 숫자 , 제로를 포함 Int32.TryParse() 변환 실패한.

하지만 전달 된 문자열 자체가 '0'의 문자열 표현 인 경우 어떻게됩니까? 따라서 TryParse은 0을 반환합니다. 그것이 성공인지 실패인지 어떻게 알 수 있습니까?

답변

48

아니요, TryParse은 성공을 나타 내기 위해을 반환합니다. out 매개 변수의 값은 구문 분석 된 값에 사용되거나 실패하면 0으로 사용됩니다. 그래서 : 당신이 "0"에 전달하면 당신이 "나쁜 번호"를 전달하는 경우는 두 번째 블록을 실행하는 반면

int value; 
if (Int32.TryParse(someText, out value)) 
{ 
    // Parse successful. value can be any integer 
} 
else 
{ 
    // Parse failed. value will be 0. 
} 

그래서, 그것은 첫 번째 블록을 실행합니다.

+0

아이쿠! 내 잘못이야. 내가 프로그래밍을하는 동안 나는 닫아야한다. 너무 쉽게 게시 할 수 :). – NLV

+0

if의 끝 부분에')'을 사용하지 않았습니다. – BoltClock

+0

@BoltClock : 고침, 고마워. –

5

이 메서드는 성공 또는 실패를 나타내는 부울을 반환합니다. 그것을 사용하십시오. 정수는 메서드에 전달되는 참조 매개 변수이며 메서드의 반환 값과는 아무 관련이 없습니다.

다음은 documentationInt32.TryParse()의 프로토 타입입니다. 을 부울 값으로 반환합니다. 두 번째 매개 변수는 out int이며, 이는 인수가 참조로 전달되므로 메서드에 의해 변경 될 것임을 의미합니다.

public static bool TryParse(
    string s, 
    out int result 
) 

그래서이 작업을 수행, 성공 또는 실패를 확인하려면

int value; 

if (Int32.TryParse("0", out value)) 
    Console.WriteLine("Parsed as " + value); 
else 
    Console.WriteLine("Could not parse"); 
2

TryParse를()는 부울을 반환합니다.

 Int32 testInt; 

     if (!Int32.TryParse("123", out testInt)) 
     { 
      MessageBox.Show("Is not a Int32!"); 
      return; // abbrechen 
     } 

     MessageBox.Show("The parst Int32-value is " + testInt); 
2

Int32.TryParse() 방법으로서 반환 값을 반환 boolean 및 출력 파라미터로 변환 된 값을 제공한다. 따라서 상태에 대한 값 boolean을 확인할 수 있습니다.

private static void TryToParse(string value) 
    { 
     int number; 
     bool result = Int32.TryParse(value, out number); 
     if (result) 
     { 
     Console.WriteLine("Converted '{0}' to {1}.", value, number);   
     } 
     else 
     { 
     if (value == null) value = ""; 
     Console.WriteLine("Attempted conversion of '{0}' failed.", value); 
     } 
    } 
0

지금 당신은 TryParse 같은 내에서 변수를 선언 할 수 있습니다 C# 7을 사용하여 ...

if (Int32.TryParse(someText, out int value)) 
{ 
    // Parse successful. value can be any integer 
} 
else 
{ 
    // Parse failed. value will be 0. 
}