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

Определение

Приводит элементы IEnumerable к указанному типу.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)

Параметры типа

TResult

Тип для приведения элементы source для.The type to cast the elements of source to.

Параметры

source
IEnumerable IEnumerable IEnumerable IEnumerable

IEnumerable , Содержащий элементы, приведенное к типу TResult.The IEnumerable that contains the elements to be cast to type TResult.

Возвраты

IEnumerable<TResult>

IEnumerable<T> Содержит все элементы исходной последовательности, приведенные в заданный тип.An IEnumerable<T> that contains each element of the source sequence cast to the specified type.

Исключения

Свойство source имеет значение null.source is null.

Элемент в последовательности не может быть приведен к типу TResult.An element in the sequence cannot be cast to type TResult.

Примеры

В следующем примере кода демонстрируется использование Cast<TResult>(IEnumerable) включить использование стандартных операторов запросов на 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

Комментарии

Этот метод реализуется с помощью отложенного выполнения.This method is implemented by using deferred execution. Немедленно возвращаемое значение — это объект, который хранит все сведения, необходимые для выполнения действия.The immediate return value is an object that stores all the information that is required to perform the action. Запрос, представленный этот метод не выполняется до перечисления объекта путем вызова его GetEnumerator метод напрямую или с помощью foreach в Visual C# или For Each в 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.

Cast<TResult>(IEnumerable) Метод включает стандартные операторы запросов вызываемая неуниверсальных коллекций, указав сведения о типе, необходимые для.The Cast<TResult>(IEnumerable) method enables the standard query operators to be invoked on non-generic collections by supplying the necessary type information. Например ArrayList не реализует IEnumerable<T>, однако при вызове метода Cast<TResult>(IEnumerable) на ArrayList объекта, стандартные операторы запросов может затем использоваться для запроса последовательности.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.

Если элемент нельзя преобразовать в тип TResult, этот метод вызывает исключение InvalidCastException.If an element cannot be converted to type TResult, this method throws a InvalidCastException.

Исходная последовательность для этого метода IEnumerable, то есть элементы имеют компиляции статический тип object.The source sequence for this method is IEnumerable, which means the elements have the compile-time static type of object. Только преобразования типов, которые выполняются с помощью данного метода являются ссылочные преобразования и распаковки-преобразования.The only type conversions that are performed by this method are reference conversions and unboxing conversions. Тип среды выполнения элементов в коллекции должно соответствовать целевому типу, или в случае типов значений, тип среды выполнения элементов должен быть результат преобразования-упаковки типа целевого объекта.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. Другие преобразования типов, например между разными числовыми типами, не допускаются.Other conversion types, such as those between different numeric types, are not allowed.

Чтобы получить только те элементы, которые могут быть преобразованы в тип TResult, использовать OfType вместо метода Cast<TResult>(IEnumerable).To obtain only those elements that can be converted to type TResult, use the OfType method instead of Cast<TResult>(IEnumerable).

В выражении запроса переменная итерации явным образом типизированной преобразуется в вызов метода Cast<TResult>(IEnumerable).In a query expression, an explicitly typed iteration variable translates to an invocation of Cast<TResult>(IEnumerable). В этом примере показан синтаксис для явным образом типизированной переменной диапазона.This example shows the syntax for an explicitly typed range variable.

from int i in objects  
From i As Integer In objects  

Используйте select предложение запроса для выполнения других преобразования типов, например неявных числовых преобразований.Use the select clause of a query to perform other conversion types, like the implicit numeric conversions. В следующем примере используются оба Cast метод и select инструкции для преобразования последовательности целых чисел, упакованный в последовательность чисел двойной точности.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)

Применяется к

Дополнительно