C# 为什么我会收到以下代码的异常?

C# 为什么我会收到以下代码的异常?,c#,viewmodel,C#,Viewmodel,我在接口中定义了一个属性: Boolean IsBusy { get; } 它在类中实现为: private Boolean _isBusy = false; public Boolean IsBusy { get { return this._isBusy; } private set { if (this._isBusy != value)

我在接口中定义了一个属性:

 Boolean IsBusy { get; }
它在类中实现为:

private Boolean _isBusy = false;
public Boolean IsBusy
    {
        get
        {
            return this._isBusy;
        }

        private set
        {
            if (this._isBusy != value)
            {
                this._isBusy = value;
                this.OnPropertyChanged("IsBusy");
            }
        }
    }
然后,当我运行应用程序时,在构造函数中检查IsBusy值时,总是会出现以下错误:

“IsBusy”引发了类型为“System.NullReferenceException”的异常bool{System.NullReferenceException}

我想不出来。如果我将所有
Boolean
更改为
bool
,则会得到相同的错误


如何修复它?

bool
只是
Boolean
的语法快捷方式,
bool
Boolean
在编译中的计算结果是相同的。

在调用它之前,通过检查
OnPropertyChanged
是否为null来修复它,假设
OnPropertyChanged
是一个事件或一个委托变量(您还没有明确说明)。这与等价的
bool
Boolean
无关(假设
Boolean
解析为
System.Boolean


我看不出它抛出
NullReferenceException
的任何其他原因,尽管它确实可以帮助您澄清在抛出异常时您是在调用getter还是setter。一个简短而完整的例子会更有帮助。

无<代码>布尔值是.net CLI用来表示真/假值的内容<代码>布尔是c#使用的

  • bool
    是结构
    System.Boolean的C#别名。它们是一样的
  • 您的问题可能是
    this.OnPropertyChanged
    未分配。这与
    bool
    vs
    Boolean
    完全无关
  • C#包含所有本机类型的别名。String代表String,Int32代表int,等等。您使用的方法没有区别:


    Boolean不能为NULL,因此您可能会因为OnPropertyChanged中的某些内容而收到错误。

    bool
    关键字只是
    Boolean
    关键字的类型别名


    int
    相同的是
    Int32

    的别名,您可以在调用IsBusy的地方获取构造函数的片段吗?