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

Definição

Converte os elementos de um IEnumerable para o 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

O tipo no qual os elementos de source deverão ser convertidos.The type to cast the elements of source to.

Parâmetros

source
IEnumerable IEnumerable IEnumerable IEnumerable

O IEnumerable que contém os elementos a serem convertidos no tipo TResult.The IEnumerable that contains the elements to be cast to type TResult.

Retornos

IEnumerable<TResult>

Um IEnumerable<T> que contém cada elemento da sequência de origem convertido para o tipo especificado.An IEnumerable<T> that contains each element of the source sequence cast to the specified type.

Exceções

Um elemento na sequência não pode ser convertido para o tipo TResult.An element in the sequence cannot be cast to type TResult.

Exemplos

O exemplo de código a seguir demonstra como usar Cast<TResult>(IEnumerable) para habilitar o uso de operadores de consulta padrão em um 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

Comentários

Esse método é implementado usando a execução adiada.This method is implemented by using deferred execution. O imediata valor retornado é um objeto que armazena todas as informações necessárias para executar a ação.The immediate return value is an object that stores all the information that is required to perform the action. A consulta representada por esse método não é executada até que o objeto é enumerado chamando-se suas GetEnumerator método diretamente ou usando foreach no Visual c# ou For Each no 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.

O Cast<TResult>(IEnumerable) método permite que os operadores de consulta padrão a ser invocada em coleções não genéricas, fornecendo as informações de tipo necessários.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. Por exemplo, ArrayList não implementa IEnumerable<T>, mas chamando Cast<TResult>(IEnumerable) sobre o ArrayList do objeto, os operadores de consulta padrão, em seguida, podem ser usados para consultar a sequência.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 um elemento não pode ser convertido no tipo TResult, esse método lança um InvalidCastException.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

A sequência de origem para este método é IEnumerable, que significa que os elementos têm o tipo estático do tempo de compilação da object.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Apenas conversões de tipo que são executadas por esse método são conversões de referência e conversões unboxing.The only type conversions that are performed by this method are reference conversions and unboxing conversions. O tipo de tempo de execução dos elementos na coleção deve corresponder ao tipo de destino ou, no caso de tipos de valor, o tipo de tempo de execução dos elementos deve ser o resultado de uma conversão boxing do 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. Outros tipos de conversão, como aqueles entre diferentes tipos numéricos, não são permitidos.Other conversion types, such as those between different numeric types, are not allowed.

Para obter apenas os elementos que podem ser convertidos para o tipo TResult, use o OfType método em vez 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).

Em uma expressão de consulta, uma variável de iteração digitadas explicitamente se traduz em uma invocação de Cast<TResult>(IEnumerable).In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). Este exemplo mostra a sintaxe para uma variável de intervalo de 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 o select cláusula de uma consulta para executar outros tipos de conversão, como as conversões numéricas implícitas.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. O exemplo a seguir usa o Cast método e um select instrução para converter uma sequência de inteiros demarcados em uma sequência de duplicatas.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)

Aplica-se a

Veja também