为什么弱引用不是结构体?



正如本文所说:http://www.philosophicalgeek.com/2014/08/14/prefer-weakreferencet-to-weakreference/

如果你正在使用WeakReference,这很可能意味着你正在使用有点记忆意识。在本例中,分配newWeakReference对象将提供额外的、不必要的内存压力。

在这种情况下,让它成为一个结构体不是更有意义吗?不可变,然后去掉SetTarget()

WeakReferenceWeakReference<T>类都有终结器,如果它们是结构体,这是不可能的。

如果确实有必要,您可以通过使用GCHandle的弱变量来创建自己的自定义弱引用结构体。(我相信,虽然我不确定,WeakReferenceWeakReference<T>在内部使用GCHandle,尽管它们的终结器确保一切都被正确清理。您的自定义结构体需要处理自己的清理,而不需要使用终结器。

最新更新