2016-12-05 84 views
1

我有一個類Foo與公共領域MyField(我知道,糟糕的設計,幾年前由一個工具自動生成,但沒有最近的計劃重新生成的代碼爲了朝着自動屬性)和Foo一類派生:在構造函數中,字段是否可以不是null(或其默認值)?

public class Foo 
{ 
    public int MyField; 
} 
public class Bar : Foo 
{ 

} 

現在Foo構造函數中有一張支票,因爲我假設條件從來沒有通過,這似乎可疑的對我說:

if(this.MyField != 0) ... 

領域尚未設置在基類構造函數中。因此我的問題是:這種支票有沒有可能通過?

下列情況來到了我的腦海裏,爲了回答這個問題:

  1. BarMyField另一個缺省值。這僅僅是Bar構造函數中可能因此將後運行檢查 - >檢查不需額外通
  2. 構造函數鏈上Bar。檢查本身之前再次執行執行的Bar構造 - >檢查再次失敗

我希望我不會錯過任何情況下,因此可以直接省略檢查,不容我?

+0

實際上在裏面做了什麼,如果? – Evk

+0

@Evk爲什麼這會起到任何作用?無論如何,該字段的值在if塊中被改變。但我只是對實際達到這一點的條件感興趣。 – HimBromBeere

+0

它真的是'Foo'構造函數而不是'Bar'嗎?在後一種情況下,我會假設這是一個檢查,以確保兼容性(如果在基類中發生了某些變化)(例如,如果字段明確設置初始值)。 – Sinatr

回答

相關問題