如果我正在使用WeakReference并使用一个对象初始化它,那么它将变为null并且是GC'd。 WeakReference.Target.GetType();
会失败吗?
答案 0 :(得分:4)
是的,它将失败并显示NullReferenceException
,因为GetType
是实例方法,如果对象已被垃圾回收,则WeakReference.Target
为null
。
答案 1 :(得分:3)
不,因为这几乎像:
var a = b;
b = null;
//a is not null;
因此,您的WeakReference
对象继续指向已成为null
的对象的实例。根据文件:
如果当前WeakReference对象引用的对象具有null 被垃圾收集;否则,对该对象的引用 由当前的WeakReference对象引用。
因此,直到您的对象 GC
已收集,您仍然可以使用GetType()
。这样就完成了,因此您可以了解WeakReference
收集GC
引用对象的时间。