垃圾收集,.NET,C#

RAM*_*RAM 1 .net c# garbage-collection

我有三个对象A,B和C. C是A和B的子.C引用了A和B. A和B引用了C.我明白当A和B都引用C时删除后,C变为垃圾,将由GC收集.

  1. 我的理解是否正确?
  2. 我应该将C中的A和B的引用设置为NULL吗?
  3. 如果是,有什么好处?

public class A { public C Cr { get; set; } }
public class B { public C Cr { get; set; } }
public class C 

{
    public A Ar { get; set; }
    public B Br { get; set; }

}
class Program
{
    static void Main(string[] args)
    {
        var oa = new A();
        var ob = new B();
        var oc = new C();

        oc.Ar = oa;
        oc.Br = ob;
        oa.Cr = oc;
        ob.Cr = oc;

        // Some operation

        oa.Cr = null;
        ob.Cr = null;

        //is the following code required?
        // if yes, what is the benefit?

        oc.Ar = null;
        oc.Br = null;

    }

谢谢

内存

Jon*_*eet 7

如果没有对C的实时引用,则它有资格进行垃圾回收.这并不意味着它会立即被垃圾收集.

如果该对象即将符合垃圾回收条件,则无需在对象内设置对null的引用.

请注意,如果没有对A,B或C的"根"引用,即使它们继续相互引用,它们也都有资格进行垃圾回收.