C#循环引用垃圾回收

C#循环引用垃圾回收,c#,garbage-collection,C#,Garbage Collection,考虑C#中的以下类: 后来: { A a = new A(); B b = new B(); a.b = b; b.a = a; } 问题是: 当执行超出此范围时,两个实例中的任何一个实例是否会被垃圾收集,因为另一个实例仍持有对它们的引用?是的,它们将被垃圾收集 是的,他们都会。GC遍历依赖关系树,发现程序的任何其他部分都无法访问它们,并将正确地处理它们 这里有一篇很好的MSFT文章:啊,这是因为它们在其他任何地方都是无法到达的。谢谢。嗯,我只是不擅长搜索。 {

考虑C#中的以下类:

后来:

{
    A a = new A();
    B b = new B();
    a.b = b;
    b.a = a;
}
问题是:
当执行超出此范围时,两个实例中的任何一个实例是否会被垃圾收集,因为另一个实例仍持有对它们的引用?

是的,它们将被垃圾收集

是的,他们都会。GC遍历依赖关系树,发现程序的任何其他部分都无法访问它们,并将正确地处理它们


这里有一篇很好的MSFT文章:

啊,这是因为它们在其他任何地方都是无法到达的。谢谢。嗯,我只是不擅长搜索。
{
    A a = new A();
    B b = new B();
    a.b = b;
    b.a = a;
}