繁体   English   中英

为什么我使用以下代码获得异常?

[英]Why am I getting an exception with the following code?

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

 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更改为boolbool得到相同的错误。

我该如何解决?

你可以通过在调用它之前检查OnPropertyChanged是否为空来修复它,假设OnPropertyChanged是一个事件或一个委托变量(你还没有说清楚)。 这与boolBoolean无关,它们是等效的(假设Boolean被解析为System.Boolean )。

我看不出它会抛出NullReferenceException任何其他原因 - 尽管它可以帮助你澄清你是否在抛出异常时调用getter或setter。 一个简短但完整的例子会更有帮助。

bool只是Boolean的语法快捷方式

boolBoolean都在编译时评估相同的东西。

没有。 Boolean是.net CLI用来表示true / false值的内容。 bool是c#使用的。

  1. bool是struct System.Boolean的C#别名。 他们是一样的。
  2. 您的问题可能是this.OnPropertyChanged未分配。 这与bool vs Boolean完全无关。

C#包含所有本机类型的别名。 字符串表示字符串,Int32表示int等,与您使用的字符没有区别:

字符串与C#中的字符串

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

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

int相同的是Int32的别名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM