반응형
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
'IT개발/정보 > WPF' 카테고리의 다른 글
[ DataBinding ] INotifyPropertyChanged (객체의 변경 사항을 UI에 적용) (0) | 2021.12.23 |
---|---|
[ DataBinding ] 데이터 바인딩을 사용하지 않는 경우 (0) | 2021.12.23 |
[ Control ] TreeView (0) | 2021.12.23 |
[ Control ] ListView (0) | 2021.12.23 |
[ Control ] ComboBox, ListBox, TabControl (0) | 2021.12.23 |