C#에서 코딩을 할 때 문자열(string)을 정수(int)로 변환해야 하는 경우가 많습니다. 예를 들어, 사용자의 입력을 처리하거나 파일 또는 DB(데이터베이스)에서 불러온 데이터를 숫자로 변환해야 할 때 자주 사용됩니다. 이번 글에서는 int.Parse(), Convert.ToInt32(), int.TryParse(), System.Globalization을 활용한 변환 방법을 예제 코드와 함께 설명합니다.
목차
- int.Parse()
- int.Parse()의 특징
- Convert.ToInt32()
- Convert.ToInt32()의 특징
- int.TryParse() - 가장 안전한 방법
- int.TryParse()의 특징
- System.Globalization을 활용한 변환 (고급)
- System.Globalization의 특징
- 각 변환 방법의 예외 발생 여부 및 특징 (표 참조)
1. int.Parse()
int.Parse()는 가장 직관적인 변환 방법이지만, 변환할 문자열이 유효한 숫자가 아닐 경우 예외(FormatException)가 발생합니다.
string numberString = "123";
int number = int.Parse(numberString);
Console.WriteLine(number); // 출력: 123
int.Parse()의 특징
- 변환할 문자열이 숫자가 아닐 경우 예외 발생
- 공백이 포함되면 예외 발생 (" 123" → 오류 발생)
- 숫자로 변환 가능한 경우 정상 변환
2. Convert.ToInt32()
Convert.ToInt32()는 int.Parse()와 비슷하지만, null을 입력받으면 예외를 발생시키지 않고 0을 반환하는 차이점이 있습니다.
string numberString = null;
int number = Convert.ToInt32(numberString);
Console.WriteLine(number); // 출력: 0
Convert.ToInt32()의 특징
- 숫자로 변환 불가능한 경우 예외 발생 ("ABC" → 오류 발생)
- null 값을 입력하면 0 반환
3. int.TryParse() - 가장 안전한 방법
int.TryParse()는 예외를 발생시키지 않고 변환 성공 여부를 true 또는 false로 반환합니다.
string numberString = "123abc";
bool success = int.TryParse(numberString, out int number);
if (success)
{
Console.WriteLine(number); // 실행되지 않음
}
else
{
Console.WriteLine("변환 실패");
}
int.TryParse()의 특징
- 변환 성공 여부를 bool 값으로 반환
- 예외 발생 없이 안전하게 처리 가능
- 숫자로 변환할 수 없는 경우 0 반환 (변수 number)
4. System.Globalization을 활용한 변환 (고급)
숫자의 형식이 지역(locale)에 따라 다를 수 있기 때문에 System.Globalization을 활용하면 보다 정교한 변환이 가능합니다.
using System;
using System.Globalization;
string numberString = "1,234"; // 천 단위 구분 기호 포함
int number = int.Parse(numberString, NumberStyles.AllowThousands, CultureInfo.InvariantCulture);
Console.WriteLine(number); // 출력: 1234
System.Globalization의 특징
- 다양한 숫자 형식 지원 (AllowThousands, AllowDecimalPoint 등)
- 특정 문화권(CultureInfo)에 따라 숫자 형식 지정 가능
5. 각 변환 방법의 예외 발생 여부 및 특징 (표 참조)
변환 방법 | 예외 발생 여부 | 특징 |
int.Parse() | 발생 | 가장 간단하지만 예외 가능 |
Convert.ToInt32() | 발생 (단, null은 0 반환) | null 처리 가능 |
int.TryParse() | 없음 | 가장 안전한 변환 방법 |
System.Globalization | 필요에 따라 다름 | 문화권별 숫자 처리 가능 |
가장 안전한 방법을 원한다면 int.TryParse()를 사용하는 것이 좋으며, 특정 문화권의 숫자 형식을 처리해야 한다면 System.Globalization을 활용하는 것이 유용합니다.
'C#' 카테고리의 다른 글
C# int.Parse() 사용 시 발생하는 예외와 해결 방법 (FormatException, OverflowException) (0) | 2025.03.20 |
---|---|
C# LINQ에서 Where 조건문 여러 개 사용하기: 효율적인 필터링 방법 (0) | 2025.03.07 |
[C#] 리스트 중복 요소 제거 (Distinct, LINQ) (0) | 2023.07.17 |
[C#] double to int 형변환 (0) | 2023.01.13 |
C# 파일(File) 존재유무 확인 방법 (0) | 2023.01.11 |
댓글