事件是否使对象保持活动状态?
Does an event keep an object alive?
假设我有这个系统:
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 class 中的方法,因此它引用了 UIElement 对象。
该引用是否使对象保持活动状态?
因为 OnLanguageChanged
是实例方法,_appController
持有对构造的 UIElement
实例的引用。
虽然 _appController
还活着,但 UIElement
实例也活着。
假设我有这个系统:
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 class 中的方法,因此它引用了 UIElement 对象。
该引用是否使对象保持活动状态?
因为 OnLanguageChanged
是实例方法,_appController
持有对构造的 UIElement
实例的引用。
虽然 _appController
还活着,但 UIElement
实例也活着。