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

C# 如何在C中创建和释放PropertyChangedEventHandler#,c#,C#,我有下面的代码,它有一个“PropertyChangedEventHandler”。我看到它有一个属性PropertyChangedEventHandler,但我没有看到它称之为“new PropertyChangedEventHandler”的任何地方?当我不需要引用时,我是否需要“null”引用 public abstract class MyClass: INotifyPropertyChanged { public event PropertyChangedEventHandle

我有下面的代码,它有一个“PropertyChangedEventHandler”。我看到它有一个属性PropertyChangedEventHandler,但我没有看到它称之为“new PropertyChangedEventHandler”的任何地方?当我不需要引用时,我是否需要“null”引用

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

这被声明为
事件
。默认情况下,事件会自动创建为多播委托,该委托可以添加到多播委托中,也可以从多播委托中删除


所以不,你什么都不用做。框架将根据需要初始化并释放它。

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

当您取消订阅事件时,将在内部调用“remove”方法。如果没有更多订阅服务器,则在“remove”方法中将基础委托字段自动设置为null。所以不需要显式地将其设置为null


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

可能重复I am,请调查为什么不释放PropertyChangedEventHandler对象。我怀疑代码中仍有一些订户被(错误地)持有,并导致PropertyChangedEventHandler未被释放。有没有办法检查PropertyChangedEventHandler的订户数量?