2009년 4월 14일 화요일

Convert.ToInt32()와 int.Parse()의 차이

String을 Int형태로 바꿀 수 있는 방법에는 크게 2가지 방법이 있습니다.

int의 정적 메서드를 사용하는 방법과 Convert 클래스의  To 메서드를 쓰는 방법..
(사실 Int 뿐만이 아니라 대부분의 형들이 2가지 방법을 지원하죠..)

막상 사용하다 보면 두가지 방식 모두 거의 동일하게 동작해서 실상 차이가 있는지 모르고 지나치는 경우가
많습니다.. 사실 저도 왜 두가지를 만들어 놨는지 의문을 가지고 있었죠..

Convert 클래스가 많은 형을 지원하기도 하지만...(맞나.... ㅡㅡ;;)
가장 큰 차이는 뭐라해도 "null을 지원하느냐"가 아닐까 싶습니다.

int.Parse()를 사용할 때 인자에 null값이 들어오면 바로 에러 이쁘게 날려줄겁니다..
하지만 Convert.ToInt32()를 사용할 경우 null 값이 들어오면 0으로 값을 반환해 줍니다.

회사에서 C# 개념 정리 하라며 학원을 보내어 다니는 중입니다만...
강사도 이 차이를 잘 모르고 있더군요..

생각난 김에 한자 적어 봅니다..


string을 int로 바꾼다면 int.TryParse() 메서드를 더 추천 합니다.
기본형은 bool int.TryParse(string s, out int result) 형태 입니다.
string s를 int값으로 바꿀 수 있으면 true를 리턴하고 out 으로 참조 전달된 result 변수에 값을 입력하고,
실패하면 false를 리턴하고 int 기본값(0)을 result에  돌려 보냅니다.

변환이 성공했는지 확인하기가 더 용이해서 즐겨 쓰는 방법이죠.. ^^

댓글 2개:

  1. Convert만 사용했었는데..

    또 다른게 있었군요.. ㅎ

    감사합니다^^

    답글삭제
  2. @99% - 2009/05/08 09:53
    별말씀을요 ^^

    도움이 되었다니 다행이네요 ^^

    답글삭제