Я только заметил, что многомерный массив в С# не реализует IEnumerable<T>
, тогда как он реализует IEnumerable
. Для одномерных массивов реализованы как IEnumerable<T>
, так и IEnumerable
.
Почему это различие? Если многомерный массив равен IEnumerable
, он также должен реализовать универсальную версию? Я заметил это, потому что я пытался использовать метод Extension для многомерного массива, который терпит неудачу, если вы не используете 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);