Ich habe gerade bemerkt, dass der FSharp.Core-Namespace generische Array-Typen mit bis zu 4 Dimensionen enthält, dh Core. [] <'T> , Core. [,] <' T> usw. C # und VB scheinen in Ordnung zu sein mit System.Array - obwohl mir nicht klar ist, wie sie stark typisierte spezialisierte Array-Typen wie int [], string [] unterstützen.
Ich denke, das werden dann zwei Fragen:
- Wie unterstützt C # stark typisierte spezialisierte Array-Typen wie int [], die auf dem nicht generischen System.Array basieren?
- Warum definiert F # generische Array-Typen, wenn C # dies schafft?
Sehr wahrscheinlich durch Generieren einer speziellen Klasse, die erbt,
System.Array
da Generika in 1.0 nicht verfügbar waren. Das Verhalten wurde wahrscheinlich aus Kompatibilitätsgründen beibehalten.Weil F # nicht die gleichen Kompatibilitätsbeschränkungen hatte wie C # 2.0 mit vorhandenem Code. Nach meinem Wissen hätte C # 2.0 generische Array-Typen gehabt, wenn es die erste Version von C # gewesen wäre.
quelle