반응형
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#] 인터페이스와 추상 클래스 (1) | 2024.11.18 |
---|---|
[C#] Csv 파일을 Json 파일로 바꾸기 (3) | 2024.11.14 |
[C#] Unity에서 ProtoBuf 사용하는 방법 (1) | 2024.11.04 |
[C#] NLog 라이브러리를 사용하는데 로그가 안 찍히는 해결 방법 (0) | 2024.10.28 |
[C#] class 와 struct 의 차이점과 특징은 무엇일까? (0) | 2024.08.01 |