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

Definicja

Rzutuje elementy IEnumerable elementu do określonego typu.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)

Parametry typu

TResult

Typ, source do którego mają być rzutowane elementy.The type to cast the elements of source to.

Parametry

source
IEnumerable IEnumerable IEnumerable IEnumerable

Zawiera elementy TResult, które mają być rzutowane na typ. IEnumerableThe IEnumerable that contains the elements to be cast to type TResult.

Zwraca

IEnumerable<TResult>

IEnumerable<T> Zawiera każdy element rzutowania sekwencji źródłowej na określony typ.An IEnumerable<T> that contains each element of the source sequence cast to the specified type.

Wyjątki

Elementu w sekwencji nie można rzutować na typ TResult.An element in the sequence cannot be cast to type TResult.

Przykłady

Poniższy przykład kodu ilustruje sposób użycia Cast<TResult>(IEnumerable) programu w celu umożliwienia używania standardowych operatorów zapytań ArrayListw.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

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania.This method is implemented by using deferred execution. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji.The immediate return value is an object that stores all the information that is required to perform the action. Zapytanie reprezentowane przez tę metodę nie jest wykonywane GetEnumerator do momentu wyliczenia obiektu przez wywołanie jego metody bezpośrednio lub przy użyciu foreach w wizualizacji C# lub For Each w 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.

Cast<TResult>(IEnumerable) Metoda umożliwia wywoływanie standardowych operatorów zapytań na kolekcjach nieogólnych przez dostarczenie niezbędnych informacji o typie.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. Na przykład, ArrayList nie implementuje IEnumerable<T> Cast<TResult>(IEnumerable) ,ArrayList ale przez wywołanie obiektu, standardowe operatory zapytań mogą następnie służyć do wykonywania zapytań względem sekwencji.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.

Jeśli elementu nie można przekonwertować na typ TResult, Metoda ta InvalidCastExceptionzgłasza.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

Sekwencja źródłowa tej metody IEnumerableto, co oznacza, że elementy mają objecttyp statyczny w czasie kompilacji.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Jedyne konwersje typów, które są wykonywane przez tę metodę, to konwersje odwołań i konwersje rozpakowywanie.The only type conversions that are performed by this method are reference conversions and unboxing conversions. Typ środowiska uruchomieniowego elementów w kolekcji musi być zgodny z typem docelowym lub w przypadku typów wartości typ środowiska uruchomieniowego musi być wynikiem konwersji z opakowania typu docelowego.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. Inne typy konwersji, takie jak te między różnymi typami liczbowymi, są niedozwolone.Other conversion types, such as those between different numeric types, are not allowed.

Aby uzyskać tylko te elementy, które można przekonwertować na typ TResult, OfType Użyj metody zamiast Cast<TResult>(IEnumerable).To obtain only those elements that can be converted to type TResult, use the OfType method instead of Cast<TResult>(IEnumerable).

W wyrażeniu zapytania jawnie wpisana Zmienna iteracji tłumaczy na wywołanie Cast<TResult>(IEnumerable).In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). Ten przykład pokazuje składnię dla jawnie wpisanej zmiennej zakresu.This example shows the syntax for an explicitly typed range variable.

from int i in objects  
From i As Integer In objects  

select Użyj klauzuli zapytania, aby wykonać inne typy konwersji, takie jak niejawne konwersje numeryczne.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. W poniższym przykładzie zastosowano Cast metodę select i instrukcję, aby skonwertować sekwencję liczb całkowitych opakowanych na sekwencję podwajania.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)

Dotyczy

Zobacz też