如果我正在使用 WeakReference 并使用一个对象对其进行了初始化,则该对象将变为 null 并被 GC 处理。会WeakReference.Target.GetType();
失败吗?
问问题
103 次
2 回答
4
是的,它会以 , 失败NullReferenceException
,因为GetType
它是一个实例方法,并且WeakReference.Target
如果null
对象已被垃圾收集。
于 2013-07-16T09:10:42.860 回答
3
不,因为这几乎是一样的:
var a = b;
b = null;
//a is not null;
因此,您的WeakReference
对象继续指向已成为的对象的实例null
。根据文档:
如果当前 WeakReference 对象引用的对象已被垃圾回收,则返回 null;否则,对当前 WeakReference 对象所引用的对象的引用。
所以在你的对象没有被 GC
收集之前,你仍然可以使用GetType()
. 这是以这种方式完成的,因此您可以了解WeakReference
引用的对象何时由GC
.
于 2013-07-16T09:11:25.053 回答