2010-11-05 41 views
2

我曾在一个接口定义为一个属性:为什么我用下面的代码获得异常?

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' 布尔{System.NullReferenceException}

我弄不明白。如果我将所有Boolean更改为bool,则得到相同的错误。

我该如何解决?

+1

你可以提供你的构造函数的片段,你调用IsBusy吗? – st78 2010-11-05 18:14:29

回答

1

bool只是为Boolean

1

两个boolBoolean评估在编译同样的事情语法快捷方式。

10

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

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

1

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

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

C#包含所有本机类型的别名。字符串字符串,为的Int32 INT等有与你使用没有什么区别:

String vs string in C#

布尔不能为空,所以你很可能得到的,因为在OnPropertyChanged一些错误。

0

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

就像intInt32的别名。

相关问题