如何在C#中创建和释放PropertyChangedEventHandler

时间:2015-07-21 23:43:42

标签: c#

我有以下代码,其中包含'PropertyChangedEventHandler'。我看到它有一个属性PropertyChangedEventHandler,但我没有看到它调用'new PropertyChangedEventHandler'的任何地方?当我不需要它时,我是否需要“取消”引用?

public abstract class MyClass: INotifyPropertyChanged
{
    public event PropertyChangedEventHandler eventHandler;     
}

2 个答案:

答案 0 :(得分:3)

当您声明一个事件时,编译器会自动创建目标委托类型的后备字段和两个名为“add”和“remove”的包装器方法。订阅事件时,内部调用“add”方法,如果尚未创建,则会创建底层委托的实例(本例中为PropertyChangedEventHandler)。

取消订阅活动时,会在内部调用“删除”方法。如果没有更多订阅者,则在“remove”方法中,底层委托字段将自动设置为null。因此,您无需显式将其设置为null。

这就是你需要在引发事件之前检查空引用的原因,因为如果没有订阅者,则基础字段将为null。

答案 1 :(得分:1)

这被声明为event。默认情况下,事件会自动创建为可以添加和删除委托的多播委托。

所以不,你不需要做任何事情。框架将初始化它并在适当时释放它。