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

[C#] 코딩의기술(실전편) - 3.7 Cast VS OfType

Victory_HA 2022. 3. 31. 22:32

1. Cast 메서드

  • 컬렉션의 형을 변환해주는 메서드입니다.
  • 하지만 Cast메서드를 사용해도 형이 맞지 않을 때, 예외가 발생합니다.
    static void Example_Cast()
    {
      object[] arr = { 1, 2, 3,"test" };
    
      var q = arr.Cast<int>();
      Console.WriteLine($"q의 합계 :{q.Sum()}");
    }
  • 1.1 Cast() 사용예제

1.2 실행 결과

  • 배열에 string문자열을 int형으로 변환 하려해서 예외 발생합니다.

2. OfType메서드

  • 컬렉션의 형을 변환해주는 메서드입니다.
  • 변환할 수 없는 요소는 무시하는 LINQ 메서드입니다.
    • 예외 발생하지 않습니다.

2.1 OfType() 사용 예제

static void Example_OfType()
{
    object[] arr = { 1, 2, 3, "test" };

    var q = arr.OfType<int>();
    Console.WriteLine($"q의 합계 : {q.Sum()}");
    Console.WriteLine($"q의 개수 : {q.Count()}");
}

2.2 실행 결과

  • int형으로 변환 가능한 요소들만 처리합니다.

3. 정리

  • Cast 메서드는 단순히 형 변환 합니다.
  • 형 변환 실패하는 요소가 있으면 예외가 발생할 수 있습니다.
  • OfType 메서드는 형 변환 + 일치하는 데이터를 추출합니다.
  • 형 변환 실패해도 예외가 발생하지 않습니다.
  • 형 변환 실패 시 예외처리가 필요한 경우 Cast메서드를, 예외가 필요없으면 OfType메서드를 선택하여 사용하는 것이 좋습니다.

참고