这是我的计划:
static void Main(string[] args)
{
int[] myArr = new int[] { 4,6,2,1};
//call Where() linq method
var myEvenNumbers = myArr.Where(n => n % 2 == 0 );
Console.Read();
}
但是当我在Enumerable类
中查看Where()扩展方法的定义时public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate);
来源的类型为IEnumerable<T>
。
我的问题是:数组类没有实现IEnumerable<T>
但是我们怎样才能在数组上使用Where()扩展方法?
答案 0 :(得分:3)
数组确实实现了IEnumerable以及ICollection(及其泛型)和其他一些
foreach (var type in (new int[3]).GetType().GetInterfaces())
Console.WriteLine(type);
可生产
答案 1 :(得分:3)
数组没有实现IEnumerable<T>
,如果您尝试使用IEnumerable<T>
并且实际输入为Array
的变量,则会看到该数据。特定于类型的数组类型(如示例中的int[]
)执行实现IEnumerable<T>
以及其他泛型类型。