我有一个view对象初始化另一个对象,creditCard对象,并注册到creditCard正在筹集的事件。如果视图对象没有引用它。它会被垃圾收集吗?或者我是否必须取消订阅才能实现这一目标?
答案 0 :(得分:0)
您需要取消订阅该对象才能进行垃圾回收。
“原因很简单:在订阅事件处理程序时,事件的发布者通过事件处理程序委托保存对订阅者的引用(假设委托是实例方法)。” em> - https://stackoverflow.com/a/4526840/283787
答案 1 :(得分:0)
当您的creditCard
对象订阅事件时,ti将引用您的视图对象。例如creditCard.Event += MyEvent...
,这相当于creditCard.Event += this.MyEvent...
,其中this
将引用view
对象,因此您必须取消订阅才能进行垃圾回收。