我的课本说:
LINQ查询表达式可用于遍历实现通用IEnumerable接口的数据容器。但是,.NET System.Array类类型(用于表示字符串数组和整数数组)不能实现此协定
// The System.Array type does not seem to implement the correct
// infrastructure for query expressions!
public abstract class Array : ICloneable, IList, ICollection,IEnumerable, IStructuralComparable, IStructuralEquatable
{
...
}
虽然System.Array不直接实现IEnumerable接口,但它通过静态System.Linq.Enumerable类类型间接获得了该类型(以及许多其他以LINQ为中心的成员)所需的功能
我有点困惑。由于Array基类是抽象类,因此我们只能将派生实例创建为;
int[] i; //implement IEnumerable<int>
string[] s; //implement IEnumerable<string>
那些[]类确实实现IEnumerable,这就是为什么我们可以在System.Linq.Enumerable类类型下使用扩展方法,不是吗?为什么教科书的意思是“通过静态System.Linq.Enumerable间接获得所需的功能”
P.S我知道[]实现IEnumerable,实际上我之前曾问过一个问题。我只想知道是什么让System.Array可以访问System.Linq.Enumerable上的扩展方法?