Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

Tip & Tech

개발 중 해결한 혹은 미리 알고 있으면 좋은 팁성 글을 공유하는 공간입니다

[C#]Int32.Parse() vs Convert.ToInt32()

작성자 : 박종명
최초 작성일 : 2008-06-30 (월요일)
최종 수정일 : 2008-06-30 (월요일)
조회 수 : 3421

mkex.pe.kr 사이트에 '허동석'님이 올리신 글입니다.

--------------------------------------------------------------------------------------------------------------------------------

스트링 타입의 문자열을 integer형으로 바꾸고자 할 때 흔히 쓰는 메소드는 Int32.Parse()와 Convert.ToInt32() 입니다.
 
우리는 무작정 이 두 메소드를 아무 생각없이 사용해 왔었는데요.
 
역컴파일러를 이용하여 소스코드를 본 내용은 아래와 같습니다.
 
Parse()
public static int Parse(string s, NumberStyles style, IFormatProvider provider)
{
  NumberFormatInfo info1 = NumberFormatInfo.GetInstance(provider);
  NumberFormatInfo.ValidateParseStyle(style);
  return Number.ParseInt32(s, style, info1);
}
 
ToInt32()
public static int ToInt32(string value)
{
  if (value == null)
    return 0;
  return int.Parse(value);
}
 
ToInt32메소드는 string 값이 null일 경우 0을 리턴합니다.
 
테스트 코드를 만들어 테스트를 해본 결과 스트링이 null이 아닌 공백시에는 예외에러를 반환합니다.

결과는 아래와 같습니다.

MessageBox.Show(Convert.ToInt32(null).ToString()); // 0 출력.

MessageBox.Show(Convert.ToInt32(string.Empty).ToString()); // 예외에러발생.

MessageBox.Show(Int32.Parse(null).ToString()); // 예외에러발생.

MessageBox.Show(Int32.Parse(string.Empty).ToString()); // 예외에러발생.
 
무의식적으로 위 두 메소드를 사용했던 개발자라면 앞으로는 동적으로 스트링을 받아야 하는경우 Convert.ToInt32()를 쓰는 것이 예외처리에서

이점이 있을 것 같습니다. (약간 오바스런 감도 없진 않지만.. 최소한 Parse보다 ToInt32 써서 나쁠건 없겠죠^^)

이름
비밀번호
홈페이지
QK <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요