ArrayList arrayList = new ArrayList { "First", "Second", "Third" };
IEnumerable<string> strings = arrayList.Cast<string>();
foreach (var item in strings)
{
Console.WriteLine(item);
}
arrayList = new ArrayList { 1, "not an int", 2 };
IEnumerable<int> ints = arrayList.OfType<int>();
foreach (var item in ints)
{
Console.WriteLine(item);
}
输出结果
从输出结果我们可以看到,使用Cast方法时,arraylist的三个元素全都被打印出来了,
但是在使用OfType时,只有数组1和2被打印了出来。
是因为Cast只能处理和自己委托类型一样的元素,否则就会抛出异常,而OfType则会剔除和委托类型不一样的元素,将其他类型一样的元素打印出来