信息
您所需的主题如下所示。但此主题未包含在此库中。

Enumerable.Cast<TResult> 方法

2013/12/13

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

Namespace:  System.Linq
程序集:  System.Core(位于 System.Core.dll 中)

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

类型参数

TResult

source 中的元素要转换成的类型。

参数

source
类型: System.Collections.IEnumerable
包含要转换的元素的 IEnumerable

返回值

类型: System.Collections.Generic.IEnumerable<TResult>
一个 IEnumerable<T>,包含已转换为指定类型的源序列的每个元素。

用法说明

在 Visual Basic 和 C# 中,您可以对类型为 IEnumerable 的任何对象调用此方法作为实例方法。使用实例方法语法来调用此方法时,忽略第一个参数。

异常条件
ArgumentNullException

sourcenull

InvalidCastException

序列中的元素不能强制转换为 TResult 类型。

此方法通过使用延迟执行实现。 即时返回值为一个对象,该对象存储执行操作所需的所有信息。 只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 Visual Basic 中的 For Each)来枚举该对象时,才执行此方法表示的查询。

Cast<TResult>(IEnumerable) 方法通过提供必要的类型信息,可在非泛型集合上调用标准查询运算符。 例如,System.Collections.ArrayList 不实现 IEnumerable<T>,但通过对 System.Collections.ArrayList 对象调用 Cast<TResult>(IEnumerable),标准查询运算符才可以用于查询序列。

如果元素无法强制转换为 TResult 类型,则此方法将引发异常。 若要只获取可以强制转换为 TResult 类型的元素,请使用 OfType<TResult> 方法,而不是 Cast<TResult>(IEnumerable)

在查询表达式中,显式类型迭代变量会转换为 Cast<TResult>(IEnumerable) 的一个调用。 此示例演示显式类型范围变量的语法。

from int i in objects

以下代码示例演示如何使用 Cast<TResult>(IEnumerable)System.Collections.ArrayList 上启用标准查询运算符的使用。


      List<string> fruits = new List<string>();
      fruits.Add("apple");
      fruits.Add("mango");

      IEnumerable<string> query =
          fruits.Cast<string>().Select(fruit => fruit);

      foreach (string fruit in query)
      {
         outputBlock.Text += fruit + "\n";
      }

      // This code produces the following output:
      //
      // apple
      // mango



Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示: