C# 注册到事件的对象的垃圾回收

C# 注册到事件的对象的垃圾回收,c#,.net,events,garbage-collection,C#,.net,Events,Garbage Collection,我有一个view对象,它初始化另一个对象creditCard对象,并注册到信用卡正在引发的事件。如果视图对象没有对它的引用。它会被垃圾收集吗?或者我必须取消订阅才能实现这一点吗?您需要取消订阅才能对对象进行垃圾收集 “原因很简单:订阅事件处理程序时,事件的发布者通过事件处理程序委托持有对订阅者的引用(假设委托是实例方法)。”——当您的信用卡对象订阅事件时,ti将引用您的视图对象。例如creditCard.Event+=MyEvent…这相当于creditCard.Event+=this.MyEv

我有一个view对象,它初始化另一个对象creditCard对象,并注册到信用卡正在引发的事件。如果视图对象没有对它的引用。它会被垃圾收集吗?或者我必须取消订阅才能实现这一点吗?

您需要取消订阅才能对对象进行垃圾收集


“原因很简单:订阅事件处理程序时,事件的发布者通过事件处理程序委托持有对订阅者的引用(假设委托是实例方法)。”——

当您的
信用卡
对象订阅事件时,ti将引用您的视图对象。例如
creditCard.Event+=MyEvent…
这相当于
creditCard.Event+=this.MyEvent…
其中
this
将引用
视图
对象,因此您必须取消订阅才能进行垃圾收集。

它仅与视图对象无关<代码>信用卡
在您的程序中的任何地方都不应该有gc`edSee。。。。。。请注意,您提出的问题过于宽泛且无法回答,因为您没有解释
信用卡对象的生存期。正如关于堆栈溢出的所有其他讨论所解释的,引用了事件的订阅服务器,这可能会阻止收集它。但是,如果无法访问包含事件的对象,则可以收集事件的发布者和订阅者。没有一个很好的例子来说明你的问题,没有人能告诉你实际需要做什么。这要视情况而定。