C#:INotifyPropertyChanged"pattern":为什么需要在提升之前检查事件

Jie*_*eng 2 c# inotifypropertychanged

可能重复:
为什么每次触发事件时C#都要求您写一个空检查?

我经常看到以下代码,但不知何故得不到它.

if (PropertyChanged != null)
    PropertyChanged(this, new PropertyChangedEventArgs("UIState"));
Run Code Online (Sandbox Code Playgroud)

为什么我需要在搜索之前检查事件是否为null.所有的时间,至少在我尝试的时候,我可以通过举起活动来逃避.

shf*_*301 5

它与INotifyPropertyChanged无关.任何没有注册事件处理程序的事件都可以为null,如果在null为null时尝试调用PropertyChanged(或任何事件),则会得到NullReferenceException.

无法保证PropertyChanged永远不会为null.碰巧在注册事件处理程序时总是调用它.