泛型如何实现结构?

| 我在想这个。类显然是由ptr传递的。我怀疑结构是通过复制传递过来的,但我不确定。 (对于int数组来说,将每个元素都设置为ptr并为int传递ptrs似乎是浪费的) 但是考虑一下,
List<MyStruct>
不知道我的结构的大小。当我这样做时会发生什么?是否存在\“ List`1 \”的多个副本,并且每次我将其与没有存储大小的存储空间一起使用时,它都会创建一个新的实现? (针对T等的新偏移量进行调整)。 这可能是有道理的,因为源将位于DLL的CIL中。但是我完全猜到了,它是怎么做到的?也许是ECMA标准的参考或页面编号?     
已邀请:
        泛型使用开放和封闭的泛型类型的概念:参数化的泛型类定义(即
List<T>
)是一种开放泛型类型,运行时会针对您在代码中的每种不同用途生成封闭的泛型类型,即创建了不同的类型。对于
List<int>
List<MyStruct>
-对于每个封闭的泛型类型,在运行时都知道
T
的大小和类型。 来自MSDN的澄清:   当通用类型或方法是   编译成Microsoft中间体   语言(MSIL),它包含元数据   将其标识为具有类型   参数。 MSIL如何用于通用   使用的类型因是否   提供的类型参数是一个值   类型或引用类型。      泛型类型首次出现时   用值类型构造为   参数,运行时创建一个   特殊的通用类型   提供的参数   替换为适当的   MSIL中的位置。专门   泛型类型创建一次   用作的每个唯一值类型   参数。      泛型在以下方面有所不同   参考类型。第一次   泛型类型由任何   引用类型,运行时创建一个   具有对象的专用泛型   引用代替   MSIL中的参数。然后,每个   构造类型的时间   用引用类型实例化为   它的参数,不管是什么类型   是的,运行时重用了   先前创建的专业版本   通用类型。这个有可能   因为所有参考都是相同的   尺寸。     
        CLR编译通用类的1版本并将其用于所有引用类型。它还针对每种值类型用法编译1个版本,以优化性能。     

要回复问题请先登录注册