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