为阵列分配内存

所有类型都从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?