Enumerable.Cast<TResult>(IEnumerable) Methode

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

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

source ist null.source is null.

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 Cast<TResult>(IEnumerable) verwendet wird, um die Verwendung der Standard Abfrage Operatoren für ein ArrayList zu aktivieren.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 mithilfe von verzögerter Ausführung implementiert.This method is implemented by using deferred execution. Der unmittelbare Rückgabewert ist ein Objekt, das alle Informationen speichert, die zum Ausführen der Aktion erforderlich sind.The immediate return value is an object that stores all the information that is required to perform the action. Die durch diese Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt durch Aufrufen der GetEnumerator-Methode direkt oder mithilfe von foreach in Visual C# oder For Each in Visual Basic aufgezählt wird.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.

Mit der Cast<TResult>(IEnumerable)-Methode können die Standard Abfrage Operatoren für nicht generische Auflistungen aufgerufen werden, indem die erforderlichen Typinformationen bereitgestellt werden.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. ArrayList implementiert beispielsweise IEnumerable<T> nicht, aber durch Aufrufen von Cast<TResult>(IEnumerable) für das ArrayList-Objekt können die Standard Abfrage Operatoren verwendet werden, um die Sequenz abzufragen.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 nicht in den Typ TResult konvertiert werden kann, löst diese Methode eine InvalidCastException aus.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

Die Quell Sequenz für diese Methode ist IEnumerable. Dies bedeutet, dass die Elemente den statischen Typ der Kompilierzeit object aufweisen.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Die einzigen Typkonvertierungen, die von dieser Methode durchgeführt werden, sind Verweis Konvertierungen und Unboxing-Konvertierungen.The only type conversions that are performed by this method are reference conversions and unboxing conversions. Der Lauf Zeittyp der Elemente in der Auflistung muss mit dem Zieltyp oder im Fall von Werttypen identisch sein. der Lauf Zeittyp der Elemente muss das Ergebnis einer Boxing-Konvertierung des Zieltyps sein.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 Konvertierungs Typen, z. b. 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 zu erhalten, die in den Typ "TResult" konvertiert werden können, 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 Abfrage Ausdruck übersetzt eine explizit typisierte Iterations Variable 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 Bereichs Variable.This example shows the syntax for an explicitly typed range variable.

from int i in objects  
From i As Integer In objects  

Verwenden Sie die select-Klausel einer Abfrage, um andere Konvertierungs Typen auszuführen, wie z. b. die impliziten numerischen Konvertierungen.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. Im folgenden Beispiel werden die Cast-Methode und eine select-Anweisung verwendet, um eine Sequenz von geachtelten Ganzzahlen in eine Sequenz von Double-Werten 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