Właśnie zauważyłem, że przestrzeń nazw FSharp.Core zawiera ogólne typy tablic o maksymalnie 4 wymiarach, tj . Core. [] <'T> , Core. [,] <' T> itp. Wydaje się, że C # i VB mają się dobrze z System.Array - chociaż nie jest dla mnie jasne, jak radzą sobie z obsługą silnie typowanych specjalistycznych typów tablic, takich jak int [], string [].
Myślę, że to staje się dwa pytania:
- W jaki sposób C # obsługuje silnie typowane wyspecjalizowane typy tablic, takie jak int [] w oparciu o nietypowy System.Array?
- Biorąc pod uwagę, że C # udaje się to zrobić, dlaczego F # definiuje ogólne typy tablic?
Bardzo prawdopodobne, że generując wyspecjalizowaną klasę, która dziedziczy od
System.Array
czasu, gdy leki generyczne nie były dostępne w wersji 1.0. Zachowanie prawdopodobnie zostało zachowane w celu zachowania kompatybilności.Ponieważ F # nie miał takich samych ograniczeń kompatybilności jak C # 2.0 z istniejącym kodem. W oparciu o to, co wiem, C # 2.0 miałby ogólne typy tablic, gdyby było to pierwsze wydanie C #.
źródło