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

Définition

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.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)

Paramètres de type

TResult

Type pour lequel effectuer un cast pour les éléments de source.The type to cast the elements of source to.

Paramètres

source
IEnumerable IEnumerable IEnumerable IEnumerable

IEnumerable les éléments à être castés en type TResult.The IEnumerable that contains the elements to be cast to type TResult.

Retours

IEnumerable<TResult>

IEnumerable<T> qui contient chaque élément de la séquence source casté vers le type spécifié.An IEnumerable<T> that contains each element of the source sequence cast to the specified type.

Exceptions

Impossible de caster un élément de la séquence en type TResult.An element in the sequence cannot be cast to type TResult.

Exemples

L’exemple de code suivant montre comment utiliser Cast<TResult>(IEnumerable) pour activer l’utilisation des opérateurs de requête standard sur 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

Remarques

Cette méthode est implémentée à l’aide de l’exécution différée.This method is implemented by using deferred execution. L’exécution valeur de retour est un objet qui stocke toutes les informations qui sont requis pour effectuer l’action.The immediate return value is an object that stores all the information that is required to perform the action. La requête représentée par cette méthode n’est pas exécutée jusqu'à ce que l’objet est énumérée en appelant son GetEnumerator méthode directement ou en utilisant foreach en Visual c# ou For Each en 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.

Le Cast<TResult>(IEnumerable) méthode permet d’opérateurs de requête standard à appeler sur des collections non génériques en fournissant les informations de type nécessaires.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. Par exemple, ArrayList n’implémente pas IEnumerable<T>, mais en appelant Cast<TResult>(IEnumerable) sur la ArrayList de l’objet, les opérateurs de requête standard peuvent ensuite être utilisés pour interroger la séquence.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.

Si un élément ne peut pas être converti en type TResult, cette méthode lève un InvalidCastException.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

La séquence source pour cette méthode est IEnumerable, ce qui signifie que les éléments ont le type statique de la compilation de object.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Les seules les conversions qui sont effectuées par cette méthode sont des conversions de référence et des conversions unboxing.The only type conversions that are performed by this method are reference conversions and unboxing conversions. Le type de runtime des éléments dans la collection doit correspondre au type de cible, ou dans le cas des types valeur, le type de runtime d’éléments doit être le résultat d’une conversion boxing du type cible.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. Autres types de conversion, telles que celles entre les différents types numériques, ne sont pas autorisés.Other conversion types, such as those between different numeric types, are not allowed.

Pour obtenir uniquement les éléments qui peuvent être convertis en type TResult, utilisez le OfType méthode au lieu de Cast<TResult>(IEnumerable).To obtain only those elements that can be converted to type TResult, use the OfType method instead of Cast<TResult>(IEnumerable).

Dans une expression de requête, une variable d’itération explicitement typée se traduit par l’appel de Cast<TResult>(IEnumerable).In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). Cet exemple montre la syntaxe d’une variable de portée explicitement typée.This example shows the syntax for an explicitly typed range variable.

from int i in objects  
From i As Integer In objects  

Utilisez le select clause d’une requête pour effectuer d’autres types de conversion, comme les conversions numériques implicites.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. L’exemple suivant utilise à la fois le Cast (méthode) et un select instruction pour convertir une séquence d’entiers boxed en une séquence de valeurs de type 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)

S’applique à

Voir aussi