반응형

WPF 프로그래밍을 하다보면 문자열 텍스트를 Int형이나 어떠한 다른 형태의 자료형으로 형변환을 해야할 때를 접하게 될 것이다. (여기서는 string 문자열 -> Integer 정수형)

이럴 때 Int32.Parse() 를 써야할 것인지 Convert.ToInt32() 를 두고 고민하는 경우가 발생한다.

 

문자열의 기준으로 두 가지 방법의 차이점은 null 값의 처리이다.

 

Int32.Parse() 의 함수는 아래의 함수를 오버로드해서 사용하게 된다.

 

 

 public static int Parse(string s)
 {
      return int.Parse(s, NumberStyles.Integer, null);
 }

 

그럼 return 에서 다시 호출되는 함수를 보면 아래와 같다.

 

 public static int Parse(string s, NumberStyles style, IFormatProvider provider)
 {
     NumberFormatInfo info1 = NumberFormatInfo.GetInstance(provider);
     NumberFormatInfo.ValidateParseStyle(style);
     return Number.ParseInt32(s, style, info1);
 }

 

위와 같이 Int32.Parse() 함수를 쓰게 되면 위와 같은 과정을 거치는 것을 볼 수 있었다.

 

 

그렇다면 Convert.ToInt32() 를 사용하는 법을 파헤쳐 보자.

 

 public static int ToInt32(string value)
 {
     if (value == null)
        return 0;

     return int.Parse(value);
 }

 

여기서 중요한 점은 null 인 경우에 0을 반환해준다는 것이고, 그 다음 처리는 Int32.Parse() 와 동일한 처리과정을 거치게 된다는 것이다.

 

 

 

프로그래밍을 하다보면 예외처리가 중요하다. Int32.Parse() 와 같은 방법이 익숙해서 쓸 수도 있지만, 만들어진 프로그램에 null 값이 안들어온다는 보장이 없으므로 Convert.ToInt32() 와 같은 방법을 사용하여 예외처리를 해주는 습관이 필요할 것이다.

728x90
반응형
LIST

+ Recent posts