Имя массива многомерных массивов (или многомерного массива массивов) в .NET Reflection находится в порядке, обратном ожидаемому.
Например:
typeof(int[][,]).Name == "Int32[,][]" // "intuitively" it should be "Int32[][,]"
typeof(int[][,,][,]).Name == "Int32[,][,,][]" // seems it should be "Int32[][,,][,]" instead
typeof(int[][,,][]).Name == "Int32[][,,][]" // this is as I expected, but only because it's symmetrical
Что является причиной этого?
Я имею в виду, что я ожидал бы, например. typeof(int[][,]).Имя должно быть «Int32[][,]» вместо «Int32[,][]»
Это кажется странным. Подумайте о том, чтобы сообщить об ошибке на любом сайте Microsoft, на котором обнаружены ошибки .NET. Это может вызвать дискуссию среди людей, которые это понимают.
Это не многомерный массив, это зубчатый массив.





Оказывается, это несоответствие между системой имен типов .NET и синтаксисом C#. Такое обозначение массива имеет больше смысла с точки зрения самого типа, но при написании кода полезно записывать массивы по-другому.
Статья Эрика Липперта под названием «Массивы массивов» может быть полезна для более глубокого понимания синтаксиса массивов в C# (и синтаксиса массивов в целом).
Этот ответ основан на проблеме, которую я поднял в репозитории dotnet/runtime GitHub: «Массив многомерных массивов имеет неправильное имя» #92535.
...Я не знаю, что вы подразумеваете под «интуитивно».