프로그래밍/(도서)C#코딩의기술-실전

[C#] 코딩의기술(실전편) - 2.11 TryParse에서 결과를 보지 않는 경우

Victory_HA 2022. 3. 31. 22:30

TryParse 메서드

  • String 문자열을 데이터 형으로 변환 합니다.
  • 반환 값은 변환이 성공했는지 아니면 실패했는지를 나타냅니다.
    • 변환 성공 : True 반환
    • 변환 실패 : False 반환
  • 변환에 실패하면 해당 데이터 형의 기본값을 TryParse()의 두번째 매개변수에 초기화합니다.
    • 예제에서 r2에 데이터 형의 기본값으로 초기화

사용예제

static void Main(string[] args)
{
    var s1 = "2021/01/01 16:44:03";
    var s2 = "bad string example.";

    DateTime r1, r2;
    var b1 = DateTime.TryParse(s1, out r1);
    var b2 = DateTime.TryParse(s2, out r2);

    Console.WriteLine($"s1 = {s1}, b1 = {b1}, r1 = {r1}");
    Console.WriteLine($"s2 = {s2}, b2 = {b2}, r2 = {r2}");

    Console.ReadKey();
}

결과

TryParse 메서드 반환값 확인

  • 그럼 r2의 값을 데이터 형의 기본값과 비교할 수 있으면 반환값(True or False)를 확인하지 않아도 될까?
  • 예제에서 데이터 형의 기본값으로 반환값을 판단하면 안된다는 걸 확인할 수 있습니다.
    • default(int)와 s의 변환값을 비교해서 변환 실패를 판정하면 잘못된 처리를 할 수 있습니다.

사용예제

static void Main(string[] args)
{
    var s = "0";
    int n;
    var b = int.TryParse(s, out n);
    if (n == default(int))
        Console.WriteLine("Failed");
    else
        Console.WriteLine(n);

    Console.WriteLine($"Converted Result : {b}");

    Console.WriteLine($"n : {n}, default(int) : {default(int)}");

    Console.ReadKey();
}

결과

정리

  • TryParse()는 String 문자열을 데이터 형(int,double,DateTime 등..)으로 변환하는 메서드입니다.
  • 변환 성공시 True, 변환 실패시 False를 반환합니다.
  • 변환 실패시 TryParse()의 2번째 매개변수에 데이터 형의 기본값으로 초기화 합니다.
  • 데이터 형의 기본값으로 TryParse()의 변환 성공 여부를 결정하지 말아야합니다.

참고