2009-07-03 3 views
3

Integer.TryParse() 함수에 대한 이해는 전달 된 문자열에서 정수를 구문 분석하려고 시도한 것이고 구문 분석에 실패하면 결과 정수는 이전과 동일하게 유지됩니다.왜 Integer.TryParse가 실패하면 결과를 0으로 설정합니까?

나는 -1의 기본값을 갖는 정수를 가지고 있는데, 파싱에 실패하면 -1로 유지하고 싶습니다. 그러나 구문 분석하지 못하는 경우 Integer.TryParse() 함수는이 기본값을 0으로 변경합니다.

defaultValue -1 
parseSuccess False 

을하지만 대신이 출력 :

defaultValue 0 
parseSuccess False 

내 이해가 정확

Dim defaultValue As Integer = -1 
Dim parseSuccess As Boolean = Integer.TryParse("", defaultValue) 
Debug.Print("defaultValue {0}", defaultValue) 
Debug.Print("parseSuccess {0}", parseSuccess) 

내 기대는 위의 코드를 출력해야한다는 것입니다?

답변

20

그것은 (예외를 발생하지 않는 한)은 방법에 의해 설정되어야 의미 out 매개 변수이다.

대안

는 그것을 ref 매개 변수를 확인하고 단지 성공을 설정했을 것이다,하지만 그들은 이 동작을하지 않은 경우에도 변수를 먼저 초기화 발신자를 강요 의미한다.

당신은 비록 자신의 유틸리티 메소드를 작성할 수 있습니다

public bool TryParseInt32(string text, ref int value) 
{ 
    int tmp; 
    if (int.TryParse(text, out tmp)) 
    { 
     value = tmp; 
     return true; 
    } 
    else 
    { 
     return false; // Leave "value" as it was 
    } 
} 
3

정확합니다. TryParse는 실패하면 0을 사용합니다. (MSDN은 이것을 아주 명확하게 말합니다) 하지만 원하는 경우 paseSuccess를 확인하고 기본값을 반환 할 수 있습니다. 이 방법은 원래의 값이 무엇인지 볼 수 -