Я только что заметил, что многомерный массив в 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);