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

Definice

Přetypování prvky IEnumerable na zadaný typ.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 pro přetypování prvků source na.The type to cast the elements of source to.

Parametry

source
IEnumerable IEnumerable IEnumerable IEnumerable

Obsahující prvky TResult, které mají být přetypování na typ. IEnumerableThe IEnumerable that contains the elements to be cast to type TResult.

Návraty

IEnumerable<TResult>

IEnumerable<T> Obsahující každý prvek přetypování zdrojové sekvence na zadaný typ.An IEnumerable<T> that contains each element of the source sequence cast to the specified type.

Výjimky

Element v sekvenci nelze přetypovat na typ TResult.An element in the sequence cannot be cast to type TResult.

Příklady

Následující příklad kódu ukazuje, jak použít Cast<TResult>(IEnumerable) , chcete-li povolit použití standardních operátorů dotazu ArrayListna.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

Poznámky

Tato metoda je implementována pomocí odloženého provedení.This method is implemented by using deferred execution. Okamžitá návratová hodnota je objekt, který ukládá všechny informace, které jsou požadovány k provedení této akce.The immediate return value is an object that stores all the information that is required to perform the action. Dotaz reprezentovaný touto metodou není proveden, dokud GetEnumerator se nevytvoří výčet objektu buď voláním metody přímo nebo pomocí foreach jazyka v jazyce C# For Each 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žňuje, aby standardní operátory dotazu byly vyvolány v neobecných kolekcích zadáním potřebných informací o typu.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. Například ArrayList neimplementuje IEnumerable<T> Cast<TResult>(IEnumerable) ,ArrayList ale voláním objektu, lze použít standardní operátory dotazu pro dotazování sekvence.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.

Pokud element nelze převést na typ TResult, tato metoda InvalidCastExceptionvyvolá.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

Zdrojová sekvence této metody je IEnumerable, což znamená, že prvky mají statický objecttyp doby kompilace.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Jediné převody typu, které jsou prováděny touto metodou, jsou odkazy na převody a rozbalení.The only type conversions that are performed by this method are reference conversions and unboxing conversions. Typ modulu runtime prvků v kolekci musí odpovídat cílovému typu nebo v případě hodnotových typů musí být typ modulu runtime elementu v důsledku převodu zabalení cílového typu.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. Jiné typy převodu, jako jsou například mezi různými číselnými typy, nejsou povoleny.Other conversion types, such as those between different numeric types, are not allowed.

Chcete-li získat pouze prvky, které lze převést na TResulttyp, OfType použijte metodu namísto Cast<TResult>(IEnumerable).To obtain only those elements that can be converted to type TResult, use the OfType method instead of Cast<TResult>(IEnumerable).

Ve výrazu dotazu se explicitně typovou proměnnou iterace překládá na vyvolání Cast<TResult>(IEnumerable).In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). Tento příklad ukazuje syntaxi pro explicitně typovou proměnnou rozsahu.This example shows the syntax for an explicitly typed range variable.

from int i in objects  
From i As Integer In objects  

select Použijte klauzuli dotazu k provedení jiných typů převodu, jako jsou implicitní číselné převody.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. Následující příklad používá Cast metodu select i příkaz pro převod sekvence celých čísel v rámečcích na sekvenci Double.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)

Platí pro

Viz také