C#의 Char.TryParse() 메서드는 지정된 문자열을 그에 대응하는 유니코드 문자(char)로 변환하는 데 사용됩니다. 이 메서드의 가장 큰 장점은 변환에 실패하더라도 예외를 던지지 않고 false를 반환한다는 점입니다. 따라서 사용자 입력 검증처럼 변환 실패 가능성이 있는 상황에서 안전하게 활용할 수 있습니다.
구문(Syntax)
public static bool TryParse(string str, out char res);
매개변수 설명
- str: 변환할 문자열입니다. 반드시 길이가 1인 문자열이어야 합니다.
- res: 변환이 성공하면 결과 문자가 저장되는
out매개변수입니다. 실패 시에는 기본값인 '\0'(널 문자)이 저장됩니다.
반환값
- 변환 성공 시
true, 실패 시false를 반환합니다.
예제 1: 두 글자 이상의 문자열 변환 시도
다음 예제에서는 두 자리 숫자 문자열 "10"을 변환해 봅니다.
using System;
public class Demo {
public static void Main(){
bool res;
Char ch;
res = Char.TryParse("10", out ch);
Console.WriteLine(res);
Console.WriteLine(ch.ToString());
}
}출력 결과
False
"10"은 두 개의 문자로 구성되어 있어 단일 char 타입으로 표현할 수 없습니다. 따라서 변환에 실패하고 false가 출력됩니다. 이처럼 TryParse()는 예외를 발생시키지 않고 실패 여부만 조용히 알려주기 때문에 별도의 try-catch 처리가 필요하지 않습니다.
예제 2: 단일 문자 변환 성공 사례
이번에는 길이가 1인 문자열 "P"를 변환해 보겠습니다.
using System;
public class Demo {
public static void Main(){
bool res;
Char ch;
res = Char.TryParse("P", out ch);
Console.WriteLine(res);
Console.WriteLine(ch.ToString());
}
}출력 결과
True P
"P"는 정확히 한 글자이므로 변환이 성공하여 true가 반환되고, out 매개변수 ch에는 문자 'P'가 저장됩니다.
Char.Parse()와의 차이점
Char.Parse() 메서드도 같은 변환 작업을 수행하지만, 변환에 실패하면 FormatException 예외를 던집니다. 반면 Char.TryParse()는 실패 시 false만 반환하므로, 유효성을 먼저 확인한 후 처리하는 패턴에서 더 효율적이고 안전한 선택입니다.
정리
- Char.TryParse()는 문자열을 단일 유니코드 문자로 변환합니다.
- 변환 대상 문자열은 반드시 길이가 1이어야 하며, 그렇지 않으면
false를 반환합니다. - 예외를 발생시키지 않으므로 try-catch 블록 없이 간결하게 변환 성공 여부를 처리할 수 있습니다.