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

Definizione

Esegue il cast degli elementi di un oggetto 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

Tipo su cui eseguire il cast degli elementi di source.The type to cast the elements of source to.

Parametri

source
IEnumerable IEnumerable IEnumerable IEnumerable

Oggetto IEnumerable che contiene gli elementi da convertire in tipo TResult.The IEnumerable that contains the elements to be cast to type TResult.

Restituisce

IEnumerable<TResult>

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

Eccezioni

Non è possibile eseguire il cast di un elemento della sequenza al tipo TResult.An element in the sequence cannot be cast to type TResult.

Esempi

Nell'esempio di codice riportato di seguito viene Cast<TResult>(IEnumerable) illustrato come utilizzare per abilitare l'utilizzo degli operatori di query ArrayListstandard in un oggetto.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 valore restituito immediato è 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 finché l'oggetto non viene enumerato chiamando il GetEnumerator relativo metodo direttamente o utilizzando 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 agli operatori di query standard di essere richiamati in raccolte non generiche fornendo le informazioni sul tipo necessarie.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 non implementa IEnumerable<T> Cast<TResult>(IEnumerable) ,ArrayList ma chiamando sull'oggetto, gli operatori di query standard possono quindi essere utilizzati per eseguire una query sulla sequenza.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 TResulttipo, questo metodo genera InvalidCastExceptionun'eccezione.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

La sequenza di origine per questo metodo IEnumerableè, il che significa che gli elementi hanno il tipo statico della objectfase di compilazione di.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Le conversioni di tipi che vengono eseguite da questo metodo sono le conversioni di riferimento e le conversioni 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 o, nel caso di tipi valore, il tipo di runtime degli 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. Non sono consentiti altri tipi di conversione, ad esempio quelli tra tipi numerici diversi.Other conversion types, such as those between different numeric types, are not allowed.

Per ottenere solo gli elementi che possono essere convertiti nel TResulttipo, utilizzare OfType il metodo anziché 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 tipizzata in modo esplicito viene convertita Cast<TResult>(IEnumerable)in una chiamata di.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  

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