如何分配引用类型类中的值类型属性?

时间:2009-09-11 15:27:39

标签: vb.net

在VB.NET中,如果我创建一个类,它就是一个引用类型。但是,如果那个类充满了值类型属性,那么这是如何处理的呢?如果该类是即时的但从未填充,我怀疑指向堆已经分配了。但是,堆栈中是否为它的所有值类型属性分配了更多空间?

4 个答案:

答案 0 :(得分:2)

实例化引用类型时,它会为堆中的对象分配内存。在较高级别,为对象分配的内存量是保存成员所需的内存总和。

  • 引用类型成员:仅分配空间来保存引用,而不是它指向的对象。这需要4个字节(64位机器上8个)
  • 值类型:分配足够的空间来保存整个值类型值

答案 1 :(得分:1)

没有。在堆上分配它时,每个值类型都需要堆上的空间。

无论类中包含多少个字段,堆栈只包含一个引用。

答案 2 :(得分:1)

属性不会占用空间。菲尔兹。不需要在属性和字段之间进行一对一的对应。

在引用类型中使用值类型字段为整个值类型分配足够的内存,无论您是否使用它。这就像在引用类型中直接定义值类型中的所有字段一样。

答案 3 :(得分:0)

如果类被实例化但从未填充并不重要,因为值类型不能具有空值。因此,即使它们的值从未实际分配,它们实际上也会占用尽可能多的内存。