[英]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.