我刚才注意到,C # 中的多维数组不实现 IEnumerable<T>
,而实现 IEnumerable
。对于单维数组,同时实现了 IEnumerable<T>
和 IEnumerable
。
为什么会这样?如果一个多维数组是 IEnumerable
,那么它肯定也应该实现通用版本?我之所以注意到这一点,是因为我试图在多维数组上使用扩展方法,除非您使用 Cast<T>
或类似的方法,否则这种方法会失败; 所以我可以肯定地看到使多维数组实现 IEnumerable<T>
的参数。
为了在代码中澄清我的问题,我希望下面的代码打印四次 true
,而它实际上打印的是 true
,false
,true
,true
:
int[] singleDimensionArray = new int[10];
int[,] multiDimensional = new int[10, 10];
Debug.WriteLine(singleDimensionArray is IEnumerable<int>);
Debug.WriteLine(multiDimensional is IEnumerable<int>);
Debug.WriteLine(singleDimensionArray is IEnumerable);
Debug.WriteLine(multiDimensional is IEnumerable);