Я только что заметил, что пространство имен FSharp.Core включает в себя универсальные типы массивов до 4 измерений, то есть Core. [] <'T> , Core. [,] <' T> и т. Д. C # и VB, кажется, работают очень хорошо с System.Array - хотя мне не ясно, как им удается поддерживать строго типизированные специализированные типы массивов, такие как int [], string [].
Я думаю, что это становится двумя вопросами тогда:
- Как C # поддерживает строго типизированные специализированные типы массивов, такие как int [], основанные на неуниверсальном System.Array?
- Учитывая, что C # удается это сделать, почему F # определяет универсальные типы массивов?
Скорее всего, путем генерации специализированного класса, который наследуется,
System.Array
поскольку дженерики не были доступны в 1.0. Поведение, вероятно, было сохранено для совместимости.Потому что у F # не было тех же ограничений совместимости, которые были у C # 2.0 с существующим кодом. Исходя из того, что я знаю, C # 2.0 имел бы универсальные типы массивов, если бы это был первый выпуск C #.
источник