事件是否使对象存活?

时间:2015-10-12 08:35:47

标签: c# garbage-collection

我们说我有这个系统:

public class AppController {
    public event Action LanguageChangedEvent;
}

public class UIElement {

    private AppController _appController = (some initialization);

    public UIElement() {
        _appController.LanguageChangedEvent += OnLanguageChanged;
    }

    public void OnLanguageChanged() {
        // Do something
    }
}

由于事件保持活动状态,并且它具有对UIElement类中的方法的引用,因此它具有对UIElement对象的引用。

该引用是否使对象保持活着状态?

1 个答案:

答案 0 :(得分:2)

由于OnLanguageChanged是实例方法,_appController包含对构造的UIElement实例的引用。

_appController还活着时,UIElement实例也存在。