情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Enumerable.Cast<TResult> メソッド

2013/12/12

IEnumerable の要素を、指定した型に変換します。

Namespace:  System.Linq
アセンブリ:  System.Core (System.Core.dll 内)

public static IEnumerable<TResult> Cast<TResult>(
	this IEnumerable source
)

型パラメーター

TResult

source の要素の変換後の型。

パラメーター

source
型: System.Collections.IEnumerable
変換する要素が格納されている IEnumerable

戻り値

型: System.Collections.Generic.IEnumerable<TResult>
指定した型に変換されたソース シーケンスの各要素が格納されている IEnumerable<T>

使用上の注意

Visual Basic および C# では、このメソッドを、IEnumerable 型の任意のオブジェクトのインスタンス メソッドとして呼び出すことができます。インスタンス メソッド構文を使用してこのメソッドを呼び出す場合は、最初のパラメーターを省略します。

例外条件
ArgumentNullException

sourcenull です。

InvalidCastException

シーケンスの要素を TResult 型にキャストできません。

このメソッドは遅延実行を使用して実装されます。アクションの実行に必要なすべての情報を格納するオブジェクトがすぐに返されます。このメソッドで表されるクエリは、オブジェクトの GetEnumerator メソッドを直接呼び出すか、または Visual C# の foreach または Visual Basic の For Each を使用してオブジェクトが列挙されるまで、実行されません。

Cast<TResult>(IEnumerable) メソッドを使用すると、必要な型情報を指定することで、非ジェネリック コレクションに対して標準クエリ演算子を呼び出すことができます。たとえば、System.Collections.ArrayListIEnumerable<T> を実装しませんが、System.Collections.ArrayList オブジェクトに対して Cast<TResult>(IEnumerable) を呼び出すことで、標準クエリ演算子を使用してシーケンスを照会できます。

要素を TResult 型にキャストできない場合、このメソッドは例外をスローします。TResult 型にキャストできる要素のみを取得するには、Cast<TResult>(IEnumerable) ではなく OfType<TResult> メソッドを使用します。

クエリ式では、明示的に型指定された繰り返し変数が、Cast<TResult>(IEnumerable) の呼び出しに変換されます。明示的に型指定された範囲変数の構文を次の例に示します。

from int i in objects

Cast<TResult>(IEnumerable) を使用して、System.Collections.ArrayList で標準クエリ演算子を使用できるようにする方法を次のコード例に示します。


      List<string> fruits = new List<string>();
      fruits.Add("apple");
      fruits.Add("mango");

      IEnumerable<string> query =
          fruits.Cast<string>().Select(fruit => fruit);

      foreach (string fruit in query)
      {
         outputBlock.Text += fruit + "\n";
      }

      // This code produces the following output:
      //
      // apple
      // mango



Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: