Экспорт (0) Печать
Развернуть все
Развернуть Свернуть
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

Enumerable.Cast<TResult> - метод

Приводит элементы объекта IEnumerable к заданному типу.

Пространство имен:  System.Linq
Сборка:  System.Core (в System.Core.dll)

public static IEnumerable<TResult> Cast<TResult>(
	this IEnumerable source
)

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

TResult

Тип, в который приводятся элементы параметра source.

Параметры

source
Тип: System.Collections.IEnumerable
IEnumerable , содержащий элементы, которые можно привести к TResult.

Возвращаемое значение

Тип: System.Collections.Generic.IEnumerable<TResult>
Объект IEnumerable<T>, который содержит все элементы исходной последовательности, приведенные в заданный тип.

Примечание об использовании

В Visual Basic и C# этот метод можно вызывать как метод экземпляра для любого объекта типа IEnumerable. При вызове метода для экземпляра следует опускать первый параметр. Дополнительные сведения см. в разделе Методы расширения (Visual Basic) или Методы расширения (Руководство по программированию в C#).

ИсключениеУсловие
ArgumentNullException

Параметр source имеет значение null.

InvalidCastException

Элемент последовательности не может быть приведен к типу TResult.

Данный метод реализуется с использованием отложенного выполнения. Немедленно возвращаемое значение — это объект, в котором хранится вся информация, необходимая для выполнения операции. Запрос, представленный данным методом, не выполняется до тех пор, пока не будет произведено перечисление объекта путем непосредственного вызова его метода GetEnumerator или с помощью оператора foreach в Visual C# либо For Each в Visual Basic.

Метод Cast<TResult>(IEnumerable) позволяет применять стандартные операторы запросов к нестандартным коллекциям, предоставляя необходимую информацию о типе. Например, коллекция ArrayList не реализует интерфейс IEnumerable<T>, однако выполнение вызова Cast<TResult>(IEnumerable) для коллекции ArrayList позволит впоследствии использовать для нее стандартные операторы запросов.

Если элемент не может быть приведен к типу TResult, данный метод генерирует исключение. Чтобы получить только элементы, приводимые к типу TResult, используйте метод OfType<TResult> вместо Cast<TResult>(IEnumerable).

В выражении запроса итерационная переменная с явно определяемым типом транслируется в вызов Cast<TResult>(IEnumerable). В следующем примере показан синтаксис переменной диапазона с явно определяемым типом.

from int i in objects

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


.NET Framework

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

Приложения .NET для Windows Phone

Поддерживается в версиях: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2014 Microsoft