引用类型对象的实例字段的存储位置

时间:2012-10-02 15:07:45

标签: c# .net class heap

我有一个疑问,假设在我的类(比如说包含类)中我有一个字段实例,它是一个引用类型的对象(比如另一个类作为例子,称之为内部类),在运行时包含对象class是在堆上创建的,是否包含类存储整个内部类对象,或者包含类存储内部类的引用?

    internal class ContaingClass
    {
       private InnerClass objInner; 
    }

ContainingClass的对象是否具有objInner的引用,或者将整个objInner与其中的所有数据一起存储在其中?

2 个答案:

答案 0 :(得分:1)

构造时,它将在字段中包含空引用(假设您的构造函数未将其设置为任何内容)。该字段稍后可以分配给对实例的引用,但该实例的“内容”不会存储在ContainingClass的“内容”中。

答案 1 :(得分:1)

InnerClass是引用类型时,它将存储为实例的引用。

Eric Lippert的an answer解释了执行期间发生的事情的详细信息。