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

时间:2010-11-05 17:56:51

标签: c# viewmodel

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

 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,则会收到相同的错误。

我该如何解决?

7 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:1)

bool只是Boolean

的语法快捷方式

答案 2 :(得分:1)

boolBoolean在编译时评估相同的内容。

答案 3 :(得分:1)

无。 {。{1}}是.net CLI用来表示真/假值的内容。 Boolean是c#使用的。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

String vs string in C#

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

答案 6 :(得分:0)

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

int相同,是Int32的别名。