반응형

C#에서 Parse와 TryParse는 문자열을 숫자나 날짜와 같은 특정 데이터 타입으로 변환하는 데 사용되는 메서드입니다.

 

이 두 메서드는 비슷한 목적을 가지지만, 오류 처리 방식에서 중요한 차이점이 있습니다.

 

아래에서 각 메서드의 사용법과 차이점을 자세히 설명하겠습니다.


`Parse` 메서드
  • `Parse` 메서드는 문자열을 특정 데이터 타입으로 변환합니다.
  • 변환이 실패하면 예외를 발생시킵니다.

사용법

int number = int.Parse("123");
double decimalNumber = double.Parse("123.45");
DateTime date = DateTime.Parse("2023-07-29");

 

특징

  • 예외 발생: 변환할 수 없는 문자열이 주어지면 `FormatException`, `OverflowException` 등의 예외를 발생시킵니다.
  • 반환 값: 변환된 데이터 타입의 값을 반환합니다.

예제

try
{
    int number = int.Parse("123");
    Console.WriteLine(number); // 출력: 123

    int invalidNumber = int.Parse("ABC"); // 예외 발생
}
catch (FormatException ex)
{
    Console.WriteLine("FormatException: " + ex.Message);
}

`TryParse` 메서드
  • `TryParse` 메서드는 문자열을 특정 데이터 타입으로 변환하려고 시도하고, 변환 성공 여부를 불리언 값으로 반환합니다.
  • 변환이 실패하면 예외를 발생시키지 않고 `false`를 반환합니다.

사용법

bool success = int.TryParse("123", out int number);
bool decimalSuccess = double.TryParse("123.45", out double decimalNumber);
bool dateSuccess = DateTime.TryParse("2023-07-29", out DateTime date);

특징

  • 예외 미발생: 변환할 수 없는 문자열이 주어져도 예외를 발생시키지 않습니다.
  • 반환 값: 변환 성공 여부를 나타내는 `bool` 값을 반환하며, 변환된 값은 `out`매개변수에 저장됩니다.
  • 안정성: 예외 처리가 필요하지 않으므로 더 안전하게 문자열을 반환할 수 있습니다.

예제

if (int.TryParse("123", out int number))
{
    Console.WriteLine(number); // 출력: 123
}
else
{
    Console.WriteLine("변환 실패");
}

if (int.TryParse("ABC", out int invalidNumber))
{
    Console.WriteLine(invalidNumber);
}
else
{
    Console.WriteLine("변환 실패"); // 출력: 변환 실패
}

`Parse`와 `TryParse`의 차이점 요약
특성 Parse TryParse
반환 값 변환된 데이터 타입의 값 변환 성공 여부(bool)
오류 처리 예외 발생(FormatException, OverflowException) 예외 발생하지 않음
사용 예 int.Parse("123") int.TryParse("123", out int result)
안정성 예외 처리를 위해 try-catch 필요 예외 없이 안전하게 변환 시도

결론
  • Parse: 문자열이 올바른 형식이라는 것을 확신할 수 있는 경우에 사용합니다. 변환 실패 시 예외가 발생하기 때문에 예외 처리를 해야 합니다.
  • TryParse: 문자열이 올바른 형식인지 확실할 수 없거나, 예외 처리를 피하고 싶을 때 사용합니다. 변환 실패 시 예외가 발생하지 않으므로 더 안전하게 사용할 수 있습니다.

이 두 메서드는 각각의 상황에 따라 적절하게 선택하여 사용하면 됩니다. 일반적으로 외부 입력을 처리할 때는 TryParse를 사용하는 것이 더 안전합니다.

반응형

'C#' 카테고리의 다른 글

[C#] class 와 struct 의 차이점과 특징은 무엇일까?  (0) 2024.08.01

+ Recent posts