如果为null,WeakReference.Target.GetType是否会失败

时间:2013-07-16 09:08:00

标签: c#

如果我正在使用WeakReference并使用一个对象初始化它,那么它将变为null并且是GC'd。 WeakReference.Target.GetType();会失败吗?

2 个答案:

答案 0 :(得分:4)

是的,它将失败并显示NullReferenceException,因为GetType是实例方法,如果对象已被垃圾回收,则WeakReference.Targetnull

答案 1 :(得分:3)

不,因为这几乎像:

var a = b; 
b = null;     

//a is not null;

因此,您的WeakReference对象继续指向已成为null的对象的实例。根据文件:

  

如果当前WeakReference对象引用的对象具有null   被垃圾收集;否则,对该对象的引用   由当前的WeakReference对象引用。

因此,直到您的对象 GC已收集,您仍然可以使用GetType()。这样就完成了,因此您可以了解WeakReference收集GC引用对象的时间。