2010-11-05 80 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的別名。

相關問題