【问题标题】:Why isn't WeakReference a struct?为什么 WeakReference 不是结构?
【发布时间】:2015-09-27 23:31:59
【问题描述】:

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

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

那么在这种情况下,将其设为结构不是更有意义吗?并且在我们使用它时是不可变的,并且摆脱了 SetTarget()。

【问题讨论】:

  • 将其作为结构体在传递时会产生副作用,为什么您认为将其作为结构体可以解决这些问题?
  • 分配结构也会增加“内存压力”。只是以不同的方式。可能不是更好的方法。
  • 由于 WeakReference 早于 C#2.0 的泛型,制作 WeakReference-the-structs 的集合需要大量的拳击。

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


【解决方案1】:

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

如果真的有必要,您可以使用weak 变体GCHandle 创建自己的自定义弱引用结构。 (我相信,虽然我不确定,WeakReferenceWeakReference<T> 在内部使用 GCHandle,尽管它们的终结器确保一切都被正确清理。您的自定义结构需要照顾自己的清洁 -无需诉诸终结者。)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
相关资源
最近更新 更多