数组的开放generics类型是什么?

当我执行int[]string[]T[] – 这是一个通用数组。 数组就像其他所有对象一样。

那么[]的实际开放generics类型是什么? 我假设它只是像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

数组比generics更老。 从.net 1开始就可以使用数组,并且只在.net 2中引入了generics。因此它们在generics上没有语法糖。

相反,它们派生自Array并使用大量的运行时魔法来工作。

此外,引用类型的数组支持generics不支持的一些方差模式。 如果我没记错的话,这是为了兼容Java。

据我所知,不会有一个开放的通用类型的Array ; 它们存在于.NET Framework中的generics之前。 数组只是“怪异”; System.Array类型主要用于为数组对象提供OOfunction。 只有运行时可以从中派生出来。

但是, System.Array实现了通用IList ,它强制执行索引器。 如果您想要一个强类型的抽象并且接受强类型数组,请使用IList。

它不仅仅是语法糖,它是System.Array类的实际派生。