【发布时间】:2019-12-26 19:36:00
【问题描述】:
如果一个基类发布一个 C# 事件并且派生类订阅它——即订阅它自己——。事件订阅会阻止对象被垃圾收集吗?或者垃圾收集器是否足够聪明,可以检测到这种循环引用情况。
乍一看,它似乎应该这样做,但我很确定我已经看到了执行此操作的控制代码。这是一个如此基本的问题,我不敢相信我以前从未研究过。
编辑:对于 Juan R. 我的意思是这样的。 (从未编译过这段代码,只是在我的脑海中输入了它,所以我可能有错别字/错误)
public class Base
{
event EventHandler<double> ValueChanged;
}
public class Derived : Base
{
public Derived()
{
// Will this prevent my object from being collected?
ValueChanged += OnValueChanged;
}
private void OnValueChanged(object sender, double v) =>
{
}
}
【问题讨论】:
-
嗨乔。请发布示例代码以说明您的要求。
-
@V0ldek:撤回。
-
@JuanR 我编辑了我的答案以表明我的意思,但看起来 user560822 的答案正是我想要的