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

Definición

Convierte los elementos de IEnumerable en el tipo especificado.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)

Parámetros de tipo

TResult

Tipo al que se convierten los elementos de source.The type to cast the elements of source to.

Parámetros

source
IEnumerable IEnumerable IEnumerable IEnumerable

IEnumerable que contiene los elementos que se van a convertir al tipo TResult.The IEnumerable that contains the elements to be cast to type TResult.

Devoluciones

IEnumerable<TResult>

IEnumerable<T> que contiene cada elemento de la secuencia de origen convertido al tipo especificado.An IEnumerable<T> that contains each element of the source sequence cast to the specified type.

Excepciones

Un elemento de la secuencia no se puede convertir al tipo TResult.An element in the sequence cannot be cast to type TResult.

Ejemplos

En el ejemplo de código siguiente se muestra Cast<TResult>(IEnumerable) cómo utilizar para habilitar el uso de los operadores de consulta ArrayListestándar en.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

Comentarios

Este método se implementa mediante la ejecución aplazada.This method is implemented by using deferred execution. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción.The immediate return value is an object that stores all the information that is required to perform the action. La consulta representada por este método no se ejecuta hasta que el objeto se enumera llamando a GetEnumerator su método directamente o usando foreach en Visual C# o 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.

El Cast<TResult>(IEnumerable) método permite invocar los operadores de consulta estándar en colecciones no genéricas proporcionando la información de tipo necesaria.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. Por ejemplo, ArrayList no implementa IEnumerable<T>, pero mediante una llamada Cast<TResult>(IEnumerable) a en ArrayList el objeto, los operadores de consulta estándar se pueden usar para consultar la secuencia.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 elemento no se puede convertir al TResulttipo, este método produce una InvalidCastExceptionexcepción.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

La secuencia de origen para este método IEnumerablees, lo que significa que los elementos tienen el tipo estático en objecttiempo de compilación de.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Las únicas conversiones de tipos que realiza este método son las conversiones de referencia y las conversiones unboxing.The only type conversions that are performed by this method are reference conversions and unboxing conversions. El tipo en tiempo de ejecución de los elementos de la colección debe coincidir con el tipo de destino o, en el caso de los tipos de valor, el tipo en tiempo de ejecución de los elementos debe ser el resultado de una conversión boxing del tipo de destino.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. No se permiten otros tipos de conversión, como los de los distintos tipos numéricos.Other conversion types, such as those between different numeric types, are not allowed.

Para obtener solo los elementos que se pueden convertir al tipo TResult, utilice el OfType método en lugar 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).

En una expresión de consulta, una variable de iteración explícita con tipo se convierte en una invocación de Cast<TResult>(IEnumerable).In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). En este ejemplo se muestra la sintaxis de una variable de rango con tipo explícito.This example shows the syntax for an explicitly typed range variable.

from int i in objects  
From i As Integer In objects  

Utilice la select cláusula de una consulta para realizar otros tipos de conversión, como las conversiones numéricas implícitas.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. En el ejemplo siguiente se usa Cast el método y select una instrucción para convertir una secuencia de enteros con conversión boxing en una secuencia de valores 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)

Se aplica a

Consulte también: