C#-为什么VS 2017灰显事件对象上的null检查?

sch*_*tte 0 c# visual-studio visual-studio-2017

对事件对象执行空检查时,Visual Studio会将代码颜色更改为浅灰色。如果我没记错的话,通常意味着这行是不必要的。显然,在我的情况下不是这样(或者是?)。请参阅下面的示例:

 public event PropertyChangedEventHandler PropertyChanged;

    string test; 

    protected void OnPropertyChanged (string propertyName)
    {
        if (PropertyChanged != null) {    //This line is grey
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }  //This line is grey
        if (test != null) {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是屏幕截图: 在此处输入图片说明

Bij*_*ton 5

如果右键单击并查看(快速操作和重构)建议的修复程序,您将看到null可以使用?操作员(安全导航操作员)在与事件引发相同的行上执行参考检查。

建议采取的措施如下:

this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
Run Code Online (Sandbox Code Playgroud)