ホームページ >バックエンド開発 >C++ >LINQ の Cast() と OfType(): 型変換にそれぞれをいつ使用する必要がありますか?

LINQ の Cast() と OfType(): 型変換にそれぞれをいつ使用する必要がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-17 04:46:08222ブラウズ

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

LINQ での型変換: Cast() メソッドと OfType() メソッドの詳細な説明

LINQ (統合言語クエリ) は、開発者が使い慣れた構文を使用してデータのクエリと変換を行うことができる .NET フレームワークの強力なツールです。 ArrayList 内の要素を IEnumerable に変換する必要がある場合、Cast() と OfType() という 2 つの主なメソッドがあります。

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() は両方の要素を文字列に変換しようとします。そのうちの 1 つは整数であるため、InvalidCastException がスローされます。

  • Type() の使用:

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

    OfType() は ArrayList から文字列要素を正常に取得し、整数要素を除外します。

Cast() と OfType() の違いを理解することで、LINQ の使用時に型を効果的に変換し、データをフィルター処理して、クエリの精度と信頼性を確保できます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。