> 백엔드 개발 > C++ > LINQ의 Cast() 및 OfType(): 유형 변환에 각각을 언제 사용해야 합니까?

LINQ의 Cast() 및 OfType(): 유형 변환에 각각을 언제 사용해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-17 04:46:08
원래의
219명이 탐색했습니다.

Cast() vs. OfType() in LINQ: When Should I Use Each for Type Conversion?

LINQ의 유형 변환: Cast() 및 OfType() 메서드에 대한 자세한 설명

LINQ(Language Integrated Query)는 개발자가 익숙한 구문을 사용하여 데이터를 쿼리하고 변환할 수 있는 .NET 프레임워크의 강력한 도구입니다. ArrayList의 요소를 IEnumerable으로 변환해야 하는 경우 Cast() 및 OfType()이라는 두 가지 주요 메서드가 있습니다.

Cast() 메소드

Cast() 메서드는 ArrayList의 모든 요소를 ​​지정된 유형으로 명시적으로 변환하는 데 사용됩니다. 실제 유형에 관계없이 각 요소를 대상 유형으로 캐스팅하려고 시도합니다. 요소 캐스팅에 실패하면 InvalidCastException이 발생합니다.

OfType() 메서드

OfType() 메서드는 대상 유형으로 안전하게 변환할 수 있는 요소만 선택적으로 변환합니다. 지정된 유형과 일치하는 요소만 포함하는 IEnumerable을 반환합니다. 변환할 수 없는 요소는 결과 집합에서 제외됩니다.

Cast() 및 OfType() 메서드에 적용 가능한 시나리오

Cast() 또는 OfType() 선택은 특정 요구 사항에 따라 다릅니다.

  • Cast() 사용:

    • ArrayList의 모든 요소가 대상 유형으로 성공적으로 변환될 수 있음을 확신합니다.
    • 실제 유형이 다르더라도 모든 요소를 ​​대상 유형으로 처리하려고 합니다.
  • OfType() 사용:

    • ArrayList에 대상 유형으로 변환할 수 없는 일부 요소가 있을 수 있다고 예상합니다.
    • 안전하게 변환할 수 있는 요소만 다루고 싶습니다.

문자열과 정수를 포함하는 ArrayList가 있다고 가정해 보겠습니다.

<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
로그인 후 복사
  • Cast() 사용:

    <code class="language-csharp">  try
      {
          string[] strArr = objs.Cast<string>().ToArray();
      }
      catch (InvalidCastException)
      {
          // 处理异常
      }</code>
    로그인 후 복사

    이 경우 Cast()는 두 요소를 모두 문자열로 변환하려고 시도합니다. 그 중 하나가 정수이므로 InvalidCastException이 발생합니다.

  • OfType() 사용:

    <code class="language-csharp">  string[] strArr = objs.OfType<string>().ToArray(); // 只包含 "12345"</code>
    로그인 후 복사

    OfType()은 ArrayList에서 문자열 요소를 성공적으로 검색하고 정수 요소를 제외합니다.

Cast()와 OfType()의 차이점을 이해하면 LINQ를 사용할 때 유형을 효과적으로 변환하고 데이터를 필터링하여 쿼리의 정확성과 신뢰성을 보장할 수 있습니다.

위 내용은 LINQ의 Cast() 및 OfType(): 유형 변환에 각각을 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿