正如本文所说:http://www.philosophicalgeek.com/2014/08/14/prefer-weakreferencet-to-weakreference/
如果你正在使用WeakReference,这很可能意味着你正在使用有点记忆意识。在本例中,分配newWeakReference对象将提供额外的、不必要的内存压力。
在这种情况下,让它成为一个结构体不是更有意义吗?不可变,然后去掉SetTarget()
WeakReference
和WeakReference<T>
类都有终结器,如果它们是结构体,这是不可能的。
如果确实有必要,您可以通过使用GCHandle
的弱变量来创建自己的自定义弱引用结构体。(我相信,虽然我不确定,WeakReference
和WeakReference<T>
在内部使用GCHandle
,尽管它们的终结器确保一切都被正确清理。您的自定义结构体需要处理自己的清理,而不需要使用终结器。