我有理解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.有人可以向我解释一下吗?