簡體   English   中英

數組[]的開放泛型類型是什么?

[英]What is the open generic type of the array []?

當我執行int[]string[]T[] - 這是一個通用數組。 數組就像其他所有對象一樣。

那么[]的實際開放泛型類型是什么? 我認為它只是像Array<>類的一些語法糖,但我無法找到任何類型的東西。

如果你能在Jon Skeet之前以某種方式回答這個問題,可以獲得獎勵積分。

它只是System.Array; 它不是通用的。 請參閱此處以獲取簡短的討論: http//blogs.msdn.com/b/ericlippert/archive/2007/10/17/covariance-and-contravariance-in-c-part-two-array-covariance.aspx

數組比泛型更老。 從.net 1開始就可以使用數組,並且只在.net 2中引入了泛型。因此它們在泛型上沒有語法糖。

相反,它們派生自Array並使用大量的運行時魔術來工作。

此外,引用類型的數組支持泛型不支持的一些方差模式。 如果我沒記錯的話,這是為了兼容Java而完成的。

據我所知,不會有一個開放的通用類型的Array ; 它們存在於.NET Framework中的泛型之前。 數組只是“怪異”; System.Array類型主要用於為數組對象提供OO功能。 只有運行時可以從中派生出來。

但是, System.Array實現了通用IList<T> ,它強制執行索引器。 如果您想要一個強類型的抽象並且接受強類型數組,請使用IList。

它不僅僅是語法糖,它是System.Array類的實際派生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM