在.NET中使用弱引用有什么好处?

时间:2012-01-04 16:37:05

标签: c# weak-references

  

可能重复:
  Weak references

我理解弱引用的概念,但我无法找到在C#中应该使用弱引用的位置。

1 个答案:

答案 0 :(得分:4)

在实现EventAggregator模式时,使用WeakReference的一个很好的例子。

说你有代码

eventAggregator.Subscribe<AnEventType>(this.DoSomethingDelegate);

然后,如果您不希望发生潜在的内存泄漏,那么您将特别要取消订阅。有关详细信息,请参阅Explicitly Removing Event Handlers

但是,如果EventAggregator的内部使用弱引用保持DoSomethingDelegate,则不需要取消订阅。

为了进一步学习,我建议您使用EventAggregator in the Microsoft Practices library查看ILSpy的实施情况。这在内部使用WeakReferenceDelegate类型,它包装Weakdelegate并允许订阅而不显式取消订阅,并且没有内存泄漏的可能性。

致以最诚挚的问候,