[英]Garbage Collection, .NET, C#
我有三个对象A,B和C。C是A和B的子对象。C引用了A和B。A和B引用了C。我知道当从A和B都引用C时,删除后,C变成垃圾,将被GC收集。
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;
}
谢谢
内存
如果没有对C的实时引用,那么它就有资格进行垃圾回收。 这并不意味着会立即将其收集为垃圾。
如果该对象即将成为垃圾回收对象,则无需将引用设置为null。
请注意,如果没有对A,B或C的“根”引用,则即使它们继续相互引用,它们也都可以进行垃圾回收。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.