我刚刚注意到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);
MYYA
子衿沉夜