ホームページ > バックエンド開発 > C++ > LINQ の Cast() または OfType(): いつどちらを使用する必要がありますか?

LINQ の Cast() または OfType(): いつどちらを使用する必要がありますか?

Susan Sarandon
リリース: 2025-01-17 04:56:09
オリジナル
309 人が閲覧しました

Cast() or OfType() in LINQ: When Should I Use Which?

LINQ の Cast() と OfType() の違い: 深い理解

LINQ では、異なる型の要素が含まれる可能性のあるコレクションを操作する場合、コレクション全体を特定の型に変換する必要がある場合があります。 LINQ は、この目的のために、Cast() と OfType() という 2 つのメソッドを提供します。

Cast() メソッド

Cast() は、コレクション内のすべての 要素を指定された型に変換しようとします。いずれかの要素が正常にキャストできない場合は、InvalidCastException がスローされます。このメソッドは、コレクション内のすべての要素を必要な型に変換できることが確実な場合に便利です。

OfType() メソッド

Cast() とは異なり、OfType() は、指定された型に安全にキャストできるコレクション内の要素のみを返します。すべての要素を変換しようとするわけではないため、例外はスローされません。この方法は、変換可能な要素のみをフィルターで除外する場合に便利です。

使用例

次のコードを考えてみましょう:

<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
ログイン後にコピー

Cast() を使用してこの配列を文字列のコレクションに変換しようとすると、要素の 1 つが整数であるため、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」が 1 つだけ含まれます。

概要

Cast() と OfType() は、混合型のコレクションを操作するときに異なる目的を果たす 2 つの LINQ メソッドです。 Cast() はすべての要素をキャストしようとしますが、OfType() はキャストしても安全な要素のみを選択します。型キャストが確実な場合は Cast() を使用し、有効な要素を除外するだけの場合は OfType() を使用します。

以上がLINQ の Cast() または OfType(): いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート