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 Cast<TResult>(IEnumerable) verwendet wird, um die Verwendung der Standard Abfrage Operatoren ArrayListfür einen 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 GetEnumerator ausgeführt, wenn das Objekt durch Aufrufen der-Methode direkt oder mithilfe foreach von in Visual C# oder For Each Visual Basic aufgelistet 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 Cast<TResult>(IEnumerable) der-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. Beispielsweise ArrayList wird von nicht implementiert IEnumerable<T>, aber durch Aufrufen Cast<TResult>(IEnumerable) von für ArrayList das-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 TResultkonvertiert werden kann, löst diese Methode eine InvalidCastExceptionaus.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

Die Quell Sequenz für diese Methode ist IEnumerable, was bedeutet, dass die Elemente den statischen objectTyp der Kompilierzeit 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.

Verwenden Sie anstelle von TResult OfType Cast<TResult>(IEnumerable)die-Methode, um nur die Elemente zu erhalten, die in den-Typ konvertiert werden können.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 select die-Klausel einer Abfrage, um andere Konvertierungs Typen auszuführen, 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 sowohl die Cast -Methode als select auch eine-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