Enumerable.Cast<TResult> 方法
将 IEnumerable 的元素强制转换为指定的类型。
public static IEnumerable<TResult> Cast<TResult>(
this IEnumerable source
)
类型参数
- TResult
-
source 中的元素要强制转换成的类型。
使用说明
在 Visual Basic 和 C# 中,可以在 IEnumerable 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时,请省略第一个参数。有关详细信息,请参阅扩展方法 (Visual Basic)或扩展方法(C# 编程指南)。
备注
此方法通过使用延迟执行实现。 即时返回值为一个对象,该对象存储执行操作所需的所有信息。 只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 Visual Basic 中的 For Each)来枚举该对象时,才执行此方法表示的查询。
Cast<TResult>(IEnumerable) 方法通过提供必要的类型信息,可在非泛型集合上调用标准查询运算符。 例如,ArrayList 并不实现 IEnumerable<T>,但通过调用 ArrayList 对象上的 Cast<TResult>(IEnumerable),就可以使用标准查询运算符查询该序列。
如果元素无法强制转换为 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

浙公网安备 33010602011771号