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 cómo usar Cast<TResult>(IEnumerable) para habilitar el uso de los operadores de consulta estándar en 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

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 se enumera el objeto llamando a su GetEnumerator método directamente o mediante 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 a los operadores de consulta estándar que se invocará 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 a Cast<TResult>(IEnumerable) en el ArrayList de objeto, los operadores de consulta estándar, a continuación, pueden usarse 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 tipo TResult, este método produce una InvalidCastException.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

La secuencia de origen para este método es IEnumerable, lo que significa que los elementos tienen el tipo estático de tiempo de compilación de object.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Las conversiones de tipos solo realizadas por este método son las conversiones de referencia y 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 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 que hay entre los tipos numéricos diferentes.Other conversion types, such as those between different numeric types, are not allowed.

Para obtener únicamente 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 con tipo explícito 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 para 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  

Use el 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 tanto el Cast método y un select 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: