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

Definition

Wandelt die Elemente eines IEnumerable in den angegebenen Typ umCasts 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)

Typparameter

TResult

Der Typ, an den die Elemente von source übergeben werden sollen.The type to cast the elements of source to.

Parameter

source
IEnumerable IEnumerable IEnumerable IEnumerable

Das IEnumerable, das die in Typ TResult umzuwandelnden Elemente enthält.The IEnumerable that contains the elements to be cast to type TResult.

Gibt zurück

IEnumerable<TResult>

Ein IEnumerable<T>, das jedes Element der Quellsequenz enthält, das in den angegebenen Typ umgewandelt wirdAn IEnumerable<T> that contains each element of the source sequence cast to the specified type.

Ausnahmen

Ein Element in der Sequenz kann nicht in den Typ TResult umgewandelt werden.An element in the sequence cannot be cast to type TResult.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mit Cast<TResult>(IEnumerable) So aktivieren Sie die Verwendung der standardmäßigen Abfrageoperatoren auf eine 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

Hinweise

Diese Methode wird mit verzögerter Ausführung implementiert.This method is implemented by using deferred execution. Die sofortige ist der Rückgabewert ein Objekt, das alle Informationen speichert, die zum Ausführen der Aktion erforderlich ist.The immediate return value is an object that stores all the information that is required to perform the action. Die Abfrage dargestellt, die von dieser Methode wird nicht ausgeführt, bis das Objekt aufgelistet wird entweder durch Aufrufen der GetEnumerator Methode direkt oder mithilfe von foreach in Visual C#- oder For Each in Visual 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.

Die Cast<TResult>(IEnumerable) Methode ermöglicht die Standardabfrageoperatoren auf nicht generische Auflistungen aufgerufen werden, indem Sie die erforderlichen Informationen angeben.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. Z. B. ArrayList implementiert nicht IEnumerable<T>, sondern durch den Aufruf Cast<TResult>(IEnumerable) auf die ArrayList Objekt ist, wird die Standardabfrageoperatoren können dann die Sequenz verwendet werden.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.

Wenn ein Element konvertiert werden kann, Typ TResult, löst diese Methode eine InvalidCastException.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

Die Quellsequenz für diese Methode ist IEnumerable, d. h. die Elemente, die während der Kompilierung statischen Typ des verfügen object.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Die einzige typkonvertierungen, die von dieser Methode durchgeführt werden, sind Verweis- und unboxing-Konvertierungen.The only type conversions that are performed by this method are reference conversions and unboxing conversions. Die Common Language Runtime-Typ der Elemente in der Auflistung muss den Typ des übereinstimmen, oder im Fall von Werttypen, muss des Common Language Runtime-Typs der Elemente das Ergebnis einer Boxing-Konvertierung des Zieltyps.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. Andere Konvertierungstypen wie die zwischen verschiedenen numerischen Typen sind nicht zulässig.Other conversion types, such as those between different numeric types, are not allowed.

Um nur die Elemente abzurufen, die in den Typ konvertiert werden können TResult, verwenden Sie die OfType Methode anstelle von Cast<TResult>(IEnumerable).To obtain only those elements that can be converted to type TResult, use the OfType method instead of Cast<TResult>(IEnumerable).

In einem Abfrageausdruck, der eine explizit typisierte Iterationsvariable übersetzt in einen Aufruf von Cast<TResult>(IEnumerable).In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). Dieses Beispiel zeigt die Syntax für eine explizit typisierte Bereichsvariable.This example shows the syntax for an explicitly typed range variable.

from int i in objects  
From i As Integer In objects  

Verwenden der select -Klausel einer Abfrage andere Konvertierung, z. B. den impliziten numerischen Konvertierungen ausführen.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. Im folgenden Beispiel wird sowohl die Cast Methode und eine select Anweisung, um eine Sequenz von geschachtelten ganzen Zahlen in eine Sequenz von Double-Werte zu konvertieren.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)

Gilt für:

Siehe auch