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메서드를 선택하여 사용하는 것이 좋습니다.
참고