为什么WeakReference不是一个结构?

ben*_*blo 7 .net c# garbage-collection memory-management

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

如果您正在使用WeakReference,则可能意味着您有点记忆.在这种情况下,分配新的WeakReference对象将产生额外的,不必要的内存压力.

所以在这种情况下,将它变成结构会不会更有意义吗?当我们在它的时候,并且摆脱SetTarget().

Luk*_*keH 2

和类都有终结器,如果它们是 struct ,则这WeakReference不可能的WeakReference<T>

如果确实有必要,您也许可以通过使用GCHandle. (我相信,尽管我不确定,但WeakReference在内部WeakReference<T>使用GCHandle,尽管它们的终结器确保所有内容都被正确清理。您的自定义结构需要自行清理,而不需要求助于终结器。)