Имя массива многомерных массивов?

Имя массива многомерных массивов (или многомерного массива массивов) в .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

Что является причиной этого?

...Я не знаю, что вы подразумеваете под «интуитивно».

Dai 23.09.2023 01:24

Я имею в виду, что я ожидал бы, например. typeof(int[][,]).Имя должно быть «Int32[][,]» вместо «Int32[,][]»

jbz 23.09.2023 01:36

Это кажется странным. Подумайте о том, чтобы сообщить об ошибке на любом сайте Microsoft, на котором обнаружены ошибки .NET. Это может вызвать дискуссию среди людей, которые это понимают.

Flydog57 23.09.2023 04:06

Это не многомерный массив, это зубчатый массив.

Charlieface 24.09.2023 05:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оказывается, это несоответствие между системой имен типов .NET и синтаксисом C#. Такое обозначение массива имеет больше смысла с точки зрения самого типа, но при написании кода полезно записывать массивы по-другому.

Статья Эрика Липперта под названием «Массивы массивов» может быть полезна для более глубокого понимания синтаксиса массивов в C# (и синтаксиса массивов в целом).

Этот ответ основан на проблеме, которую я поднял в репозитории dotnet/runtime GitHub: «Массив многомерных массивов имеет неправильное имя» #92535.

Другие вопросы по теме