为阵列分配内存
所有类型都从Object类派生,但值类型不分配在堆上。 值类型变量实际上包含它们的值。 那么如何将这些类型存储在数组中并用于需要引用变量的方法? 有人可以解释一下,当它们是数组的一部分时,这些值类型如何存储在堆中?
拳击和拆箱。 另请参阅此处了解与数组有关的信息(部分向下)。 注意这是针对对象数组的,一个valuetype数组(例如int[]
)没有任何(un)装箱。
看看这个问题:
数组,堆和堆栈和值类型
您可以将值类型的实例传递给期望对象的方法(ref class)。 在这种情况下,会发生装箱和拆箱。
值类型数组不需要装箱或拆箱!
CLR特别处理值类型的数组。 当然,数组是一个引用类型,它是在堆上分配的,但值类型值嵌入到堆记录中(而不是堆栈中)。
同样,当引用类型类包含值类型字段时,该字段的值将嵌入堆中的记录中。
链接地址: http://www.djcxy.com/p/78889.html上一篇: Allocation of memory for an Array
下一篇: Does System.Array perform boxing on value types or not?