C#类更改事件导致对象引用未设置为对象的实例

Kev*_*vin 4 c# events

当我更改房产时,我需要一个事件来解雇.当我运行此代码时,我得到的Object引用未设置为对象的实例.我究竟做错了什么?实例化事件的正确方法是什么,并在设置属性时触发它?

公众成员:

public event System.EventHandler ClassChanged;
Run Code Online (Sandbox Code Playgroud)

属性集:

ClassChanged(this, EventArgs.Empty);
Run Code Online (Sandbox Code Playgroud)

Cod*_*ked 6

您需要首先验证事件处理程序是否为null:

if (ClassChanged != null)
    ClassChanged(this, EventArgs.Empty);
Run Code Online (Sandbox Code Playgroud)

但总的来说,您可能希望将其包装成一个辅助方法,如下所示:

private void NotifyClassChanged() {
    if (ClassChanged != null)
        ClassChanged(this, EventArgs.Empty);
}
Run Code Online (Sandbox Code Playgroud)

或者可能实现INotifyPropertyChanged.

  • 我同意 - 在这里,INotifyPropertyChanged听起来像是合适的选择.话虽这么说,我更喜欢在空检查之前制作一个调用列表的副本(用于线程安全) - 即使它是单线程的,它也是一个好习惯. (3认同)