在C#中实例化容器类时的Null Object Ref

时间:2014-06-19 13:17:59

标签: c# nested nullreferenceexception instantiation

我有理解C#的以下行为:如果我定义一个包含这样的嵌套类的类:

public class Container {
    public Contained instanceofContained;

        public Container()
        {
             this.instanceofContained = new Contained();
        }
}

然后尝试通过写containerinstance = new Container()来实例化它,instanceofContained的值将为null。为什么会这样,因为对构造函数中创建的Contained对象的引用被写入instanceofContained对象的containerinstance属性,所以在构造函数完成后,这个引用将保持不变垃圾收集器不应该删除instanceofContained对象吗?但是,如果我像这样定义构造函数:

public class Container {
    public Contained instanceofContained;

        public Container(Contained instanceofContainedref)
        {
            this.instanceofContained = instanceofContainedref;
        }
}

并像这样实例化Container类:

containedinstance = new Contained();
containerinstance = new Container(containedinstance);

一切都是o.k.有人可以向我解释一下吗?

0 个答案:

没有答案