LINQ의 Cast()와 OfType()의 차이점: 심층 이해
LINQ에서는 다양한 유형의 요소가 포함될 수 있는 컬렉션으로 작업할 때 전체 컬렉션을 특정 유형으로 변환해야 할 수도 있습니다. LINQ에서는 이러한 목적을 위해 Cast() 및 OfType()이라는 두 가지 메서드를 제공합니다.
Cast() 메소드
Cast()는 컬렉션의 모든 요소를 지정된 유형으로 변환하려고 시도합니다. 요소를 성공적으로 캐스팅할 수 없는 경우 InvalidCastException이 발생합니다. 이 방법은 컬렉션의 모든 요소를 필수 유형으로 변환할 수 있다고 확신할 때 유용합니다.
OfType() 메서드
Cast()와 달리 OfType()은 지정된 유형으로 안전하게 캐스팅할 수 있는 컬렉션의 요소만 반환합니다. 모든 요소를 변환하려고 시도하지 않으므로 예외가 발생하지 않습니다. 이 방법은 변환할 수 있는 요소만 필터링하려는 경우에 유용합니다.
사용예
다음 코드를 고려하세요.
<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
Cast()를 사용하여 이 배열을 문자열 컬렉션으로 변환하려고 하면 요소 중 하나가 정수이기 때문에 InvalidCastException이 발생합니다.
<code class="language-csharp">IEnumerable<string> someCollection = objs.Cast<string>();</code>
그러나 OfType()을 사용하면 문자열로 안전하게 변환할 수 있는 요소만 반환됩니다.
<code class="language-csharp">IEnumerable<string> someCollection = objs.OfType<string>();</code>
이 경우 someCollection에는 "12345"라는 하나의 요소만 포함됩니다.
요약
Cast() 및 OfType()은 혼합 유형 컬렉션 작업 시 서로 다른 용도로 사용되는 두 가지 LINQ 메서드입니다. Cast()는 모든 요소를 캐스팅하려고 시도하는 반면 OfType()은 캐스팅하기에 안전한 요소만 선택합니다. 유형 캐스팅이 확실하다면 Cast()를 사용하고, 유효한 요소만 필터링하려면 OfType()을 사용하세요.
위 내용은 LINQ의 Cast() 또는 OfType(): 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!