Enumerable.Cast(IEnumerable) Enumerable.Cast(IEnumerable) Enumerable.Cast(IEnumerable) Enumerable.Cast(IEnumerable) Method

定義

IEnumerable の要素を、指定した型にキャストします。Casts the elements of an IEnumerable to the specified type.

public:
generic <typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Cast(System::Collections::IEnumerable ^ source);
public static System.Collections.Generic.IEnumerable<TResult> Cast<TResult> (this System.Collections.IEnumerable source);
static member Cast : System.Collections.IEnumerable -> seq<'Result>
<Extension()>
Public Function Cast(Of TResult) (source As IEnumerable) As IEnumerable(Of TResult)

型パラメーター

TResult

source の要素のキャスト後の型。The type to cast the elements of source to.

パラメーター

source
IEnumerable IEnumerable IEnumerable IEnumerable

TResult 型にキャストされる要素が格納されている IEnumerableThe IEnumerable that contains the elements to be cast to type TResult.

戻り値

IEnumerable<TResult>

指定された型にキャストされたソース シーケンスの各要素を格納する IEnumerable<T>An IEnumerable<T> that contains each element of the source sequence cast to the specified type.

例外

シーケンスの要素を TResult 型にキャストできません。An element in the sequence cannot be cast to type TResult.

次のコード例は、使用する方法を示しますCast<TResult>(IEnumerable)で標準クエリ演算子の使用を有効にする、ArrayListします。The following code example demonstrates how to use Cast<TResult>(IEnumerable) to enable the use of the standard query operators on an ArrayList.

System.Collections.ArrayList fruits = new System.Collections.ArrayList();
fruits.Add("mango");
fruits.Add("apple");
fruits.Add("lemon");

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

// The following code, without the cast, doesn't compile.
//IEnumerable<string> query1 =
//    fruits.OrderBy(fruit => fruit).Select(fruit => fruit);

foreach (string fruit in query)
{
    Console.WriteLine(fruit);
}

// This code produces the following output: 
//
// apple 
// lemon
// mango
' Create an ArrayList and add items to it.
Dim fruits As New System.Collections.ArrayList()
fruits.Add("mango")
fruits.Add("apple")
fruits.Add("lemon")

' Call Cast(Of String) to cast the ArrayList elements to strings.
Dim query As IEnumerable(Of String) =
fruits.Cast(Of String)().OrderBy(Function(fruit) fruit).Select(Function(fruit) fruit)

'' The following code, without the cast, doesn't compile.
'Dim query As IEnumerable(Of String) = _
'    fruits.OrderBy(Function(fruit) fruit).Select(Function(fruit) fruit)

Dim output As New System.Text.StringBuilder
For Each fruit As String In query
    output.AppendLine(fruit)
Next

' Display the output.
MsgBox(output.ToString())

' This code produces the following output:
'
' apple
' lemon
' mango

注釈

このメソッドは、遅延実行を使用して実装されます。This method is implemented by using deferred execution. 即時の戻り値は、操作を実行するために必要なすべての情報を格納するオブジェクトです。The immediate return value is an object that stores all the information that is required to perform the action. か、呼び出すことによって、オブジェクトが列挙されるまで、このメソッドによって表されるクエリは実行されません、GetEnumeratorメソッドを使用して直接またはforeachVisual C# またはFor EachVisual Basic で。The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

Cast<TResult>(IEnumerable)メソッドが必要な型情報を提供することによって、非ジェネリック コレクションで呼び出される標準クエリ演算子を使用できます。The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. たとえば、ArrayListを実装しませんIEnumerable<T>が呼び出すことによってCast<TResult>(IEnumerable)上、ArrayListオブジェクト、標準クエリ演算子のシーケンスをクエリに使用できます。For example, ArrayList does not implement IEnumerable<T>, but by calling Cast<TResult>(IEnumerable) on the ArrayList object, the standard query operators can then be used to query the sequence.

要素を型に変換できない場合TResult、このメソッドは、InvalidCastExceptionします。If an element cannot be converted to type TResult, this method throws a InvalidCastException.

このメソッドのソース シーケンスがIEnumerable、つまり、要素のコンパイル時の静的な型であるobjectします。The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. このメソッドによって実行される唯一の型変換は、参照変換またはボックス化解除変換されます。The only type conversions that are performed by this method are reference conversions and unboxing conversions. コレクション内の要素のランタイム型が対象の型と一致する必要があります。 または値の型の場合は、要素のランタイム型が対象の型のボックス化変換の結果をする必要があります。The runtime type of the elements in the collection must match the target type, or in the case of value types, the runtime type of elements must be the result of a boxing conversion of the target type. 別の数値型の間など、他の型の変換は許可されません。Other conversion types, such as those between different numeric types, are not allowed.

型に変換できる要素のみを取得するTResultを使用して、OfTypeメソッドの代わりにCast<TResult>(IEnumerable)します。To obtain only those elements that can be converted to type TResult, use the OfType method instead of Cast<TResult>(IEnumerable).

クエリ式では、明示的に型指定された繰り返し変数の呼び出しに変換されます。Cast<TResult>(IEnumerable)します。In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). この例では、明示的に型指定された範囲変数の構文を使用します。This example shows the syntax for an explicitly typed range variable.

from int i in objects  
From i As Integer In objects  

使用して、select暗黙的な数値変換のように、その他の型の変換を実行するクエリの句。Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. 次の例では、両方は使用して、Castメソッドとselectボックス化変換された整数のシーケンスを代替のシーケンスに変換するステートメント。The following example uses both the Cast method and a select statement to convert a sequence of boxed integers to a sequence of doubles.

IEnumerable sequence = Enumerable.Range(0, 10);
var doubles = from int item in sequence
                select (double)item;
Dim sequence As IEnumerable = Enumerable.Range(0, 10)
Dim doubles = From item As Integer In sequence
                Select CType(item, Double)

適用対象

こちらもご覧ください