本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

Enumerable.Cast<TResult> 方法 (IEnumerable)

 

将强制转换的元素 IEnumerable 为指定的类型。

命名空间:   System.Linq
程序集:  System.Core(位于 System.Core.dll)

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

参数

source
Type: System.Collections.IEnumerable

IEnumerable ,其中包含要强制转换为键入的元素 TResult

返回值

Type: System.Collections.Generic.IEnumerable<TResult>

IEnumerable<T> ,其中包含强制转换为指定类型的源序列的每个元素。

类型参数

TResult

要转换的元素的类型 source 到。

Exception Condition
ArgumentNullException

sourcenull

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

通用 Windows 平台
自 8 起可用
.NET Framework
自 3.5 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用
返回页首
显示: