C# 如何消除NullReferenceException错误

C# 如何消除NullReferenceException错误,c#,C#,我发现此错误NullReferenceException未被用户代码处理。错误发生在这一行 PropertyChanged(this, new PropertyChangedEventArgs("AboveAircraft")); 我尝试了if(this!=null)但仍然得到了错误。我怎样才能摆脱它 代码如下所示: public int AboveAircraft { get { return _above; } set {

我发现此错误
NullReferenceException未被用户代码处理。错误发生在这一行

PropertyChanged(this, new PropertyChangedEventArgs("AboveAircraft"));
我尝试了
if(this!=null)
但仍然得到了错误。我怎样才能摆脱它

代码如下所示:

public int AboveAircraft
{
        get { return _above; }
        set
        {
            if (SetProperty(ref _above, value, "AboveAircraft") && _updateModel)
            {
                if (Model.AltitudeBand == null)
                {
                    Model.AltitudeBand = new AltitudeBand();
                }

                if (this != null && AboveAircraft != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("AboveAircraft"));
                    if (_above < _below)
                    {
                        BelowAircraft = _above;
                    }
                }

                Model.AltitudeBand .Above = new AltitudeBandLimit() { Unit = AltitudeUnit.Foot, Value = _above };
            }
        }
}
公共飞机
{
获取{return\u over;}
设置
{
if(SetProperty(参考上面的值,“高于飞机”)&&&U updateModel)
{
如果(Model.AltitudeBand==null)
{
Model.AltitudeBand=新的AltitudeBand();
}
如果(此!=null&&;飞机!=null)
{
房地产变更(这是指新的房地产变更(以下简称“飞机上”);
如果(高于<低于)
{
下面的筏=上面的u;
}
}
Model.AltitudeBand.over=新的AltitudeBandLimit(){Unit=AltitudeUnit.Foot,Value=_over};
}
}
}

您需要检查
PropertyChanged
是否为空:

if (PropertyChanged != null)
{
    PropertyChanged(this, new PropertyChangedEventArgs("AboveAircraft"));
}

只有在其他位置注册了至少一个处理程序时,该异常才会不为null。

可能不是从该代码中得到异常,而是从绑定到这些属性更改事件的代码中得到异常。您是否有任何数据绑定引用您的
飞机上的
属性?
根据定义,此
不能为
null
-
引用您的类的当前实例。。。它为
null
意味着没有实例,因此条件的计算结果总是
true
。请参见“是”,上面的飞行器绑定到xaml文件中的一个文本框。逐行检查VS中的代码,并检查您的对象,以确定哪一个为空-它可能是值。@VaibhavDesai IMO我们需要知道我们正在做什么(我们写什么),否则最好不要做。@Janewang基类中是否有
OnPropertyChanged
?它将是调用事件的首选方式。不,它不在基类中。我会考虑把它加进去。