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

Definizione

Esegue il cast di elementi di un IEnumerable nel tipo specificato.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)

Parametri di tipo

TResult

Il tipo per eseguire il cast gli elementi di source per.The type to cast the elements of source to.

Parametri

source
IEnumerable IEnumerable IEnumerable IEnumerable

Il IEnumerable che contiene gli elementi di cui eseguire il cast al tipo TResult.The IEnumerable that contains the elements to be cast to type TResult.

Restituisce

IEnumerable<TResult>

Un IEnumerable<T> che contiene ogni elemento della sequenza di origine eseguire il cast nel tipo specificato.An IEnumerable<T> that contains each element of the source sequence cast to the specified type.

Eccezioni

Un elemento nella sequenza non può essere convertito nel tipo TResult.An element in the sequence cannot be cast to type TResult.

Esempi

Esempio di codice seguente viene illustrato come utilizzare Cast<TResult>(IEnumerable) per consentire l'uso degli operatori query standard in un 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

Commenti

Questo metodo viene implementato tramite l'esecuzione posticipata.This method is implemented by using deferred execution. Il controllo immediato valore restituito è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione.The immediate return value is an object that stores all the information that is required to perform the action. La query rappresentata da questo metodo non viene eseguita fino a quando l'oggetto viene enumerata chiamando relativi GetEnumerator metodo direttamente o tramite foreach in Visual c# o 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.

Il Cast<TResult>(IEnumerable) metodo consente gli operatori query standard da richiamare su raccolte non generiche fornendo le informazioni sul tipo necessari.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. Ad esempio, ArrayList neimplementuje metodu IEnumerable<T>, ma chiamando Cast<TResult>(IEnumerable) sul ArrayList dell'oggetto, gli operatori query standard sono quindi utilizzabile per la sequenza di query.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.

Se un elemento non può essere convertito nel tipo TResult, questo metodo genera un InvalidCastException.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

La sequenza di origine per questo metodo è IEnumerable, ovvero gli elementi sono il tipo statico in fase di compilazione di object.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Le conversioni di tipo unico che vengono eseguite da questo metodo sono le conversioni di riferimento e di conversione unboxing.The only type conversions that are performed by this method are reference conversions and unboxing conversions. Il tipo di runtime degli elementi nella raccolta deve corrispondere al tipo di destinazione oppure nel caso dei tipi di valore, il tipo di runtime di elementi deve essere il risultato di una conversione boxing del tipo di destinazione.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. Altri tipi di conversione, ad esempio quelle tra i tipi numerici diversi, non sono consentiti.Other conversion types, such as those between different numeric types, are not allowed.

Per ottenere solo gli elementi che possono essere convertiti nel tipo TResult, usare il OfType invece del metodo 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 un'espressione di query, una variabile di iterazione tipizzate in modo esplicito viene convertita in una chiamata di Cast<TResult>(IEnumerable).In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). In questo esempio viene illustrata la sintassi per una variabile di intervallo tipizzata in modo esplicito.This example shows the syntax for an explicitly typed range variable.

from int i in objects  
From i As Integer In objects  

Usare il select clausola di una query per eseguire altri tipi di conversione, ad esempio alle conversioni numeriche implicite.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. Nell'esempio seguente usa sia la Cast metodo e un select istruzione per convertire una sequenza di valori boxed interi in una sequenza di valori 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)

Si applica a

Vedi anche