我刚刚注意到 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);