为什么WenReak不是一个结构?

时间:2015-07-09 14:11:21

标签: c# .net memory-management garbage-collection

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

  

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

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

1 个答案:

答案 0 :(得分:1)

WeakReferenceWeakReference<T>类都有终结器,wouldn't be possible if they were structs

如果确实有必要,您可以通过使用weakGCHandle来创建自己的自定义弱引用结构。 (我相信,虽然我不确定,WeakReferenceWeakReference<T>在内部使用GCHandle,尽管他们的终结器确保所有内容都得到了适当的清理。您的自定义结构需要采取在不诉诸终结者的情况下照顾自己的清理工作。)