Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 int.Parse()와 Convert.ToInt32의 핵심 차이점 완벽 정리


C#에서는 문자열로 표현된 숫자를 정수형으로 변환할 때 int.Parse() 또는 Convert.ToInt32() 메서드를 사용합니다. 두 메서드 모두 변환할 수 없는 문자열이 입력되면 예외(Exception)를 발생시키지만, null 값 처리 방식에서 중요한 차이가 있습니다.

Convert.ToInt32는 null 값을 허용하며, null이 입력되어도 어떤 오류도 발생시키지 않습니다. 반면 int.Parse는 null 값을 허용하지 않으며, null이 입력되면 ArgumentNullException 오류를 발생시킵니다.

예제 1: int.Parse()로 문자열 변환하기

class Program {
   static void Main() {
      int res;
      string myStr = "5000";
      res = int.Parse(myStr);
      Console.WriteLine("문자열을 숫자로 변환한 결과: " + res);
      Console.ReadLine();
   }
}

출력 결과

문자열을 숫자로 변환한 결과: 5000

유효한 숫자 형식의 문자열이라면 두 메서드 모두 정상적으로 동작합니다.

예제 2: Convert.ToInt32()에 null 값 전달하기

class Program {
   static void Main() {
      int res;
      string myStr = null;
      res = Convert.ToInt32(myStr);
      Console.WriteLine("문자열을 숫자로 변환한 결과: " + res);
      Console.ReadLine();
   }
}

출력 결과

문자열을 숫자로 변환한 결과: 0

Convert.ToInt32()에 null이 전달되면 예외 없이 기본값인 0을 반환합니다.

예제 3: int.Parse()에 null 값 전달하기

class Program {
   static void Main() {
      int res;
      string myStr = null;
      res = int.Parse(myStr);
      Console.WriteLine("문자열을 숫자로 변환한 결과: " + res);
      Console.ReadLine();
   }
}

출력 결과

Unhandled exception. System.ArgumentNullException: Value cannot be null.

int.Parse()에 null이 전달되면 프로그램이 비정상 종료되며 System.ArgumentNullException 예외가 발생합니다.

정리: 언제 어떤 메서드를 사용해야 할까?

  • int.Parse(): 입력값이 null이 아님을 보장할 수 있고, 잘못된 입력에 대해 명확하게 예외를 처리하고 싶은 경우 적합합니다.
  • Convert.ToInt32(): null 가능성이 있는 입력을 안전하게 처리하고 싶은 경우 유용하며, null일 때 0으로 처리됩니다.
  • 두 메서드 모두 숫자 형식이 아닌 문자열(예: "abc")이 입력되면 FormatException을 발생시킵니다.
  • 변환 성공 여부를 사전에 확인하고 싶다면 int.TryParse() 사용을 권장합니다.