2011-06-22 75 views
1

我有以下類:我需要在我的類構造函數中設置初始值嗎?

public class Detail 
    { 

     public Detail() 
     { 
      this.File = String.Empty; 
      this.State = false; 
      this.Tag1 = 0 
     } 

     public string File { get; set; } 
     public bool State { get; set; } 
     public int Tag1 { get; set; } 
    } 
} 

我需要在構造函數中設置的初始值這樣或者將這些只是默認,當我創建的類。如何編程練習。即使不需要,在這裏設置它們會不會更好?

回答

5

StateTag1將默認爲false0分別,但File將默認爲null。如果你想要string.Empty,你必須分配它。

0

成員字段爲您初始化爲默認值。因此,如果該值爲默認值,則不需要設置(0,對於int,false對於bool,null用於參考類型)。但string.Empty不是string的默認值。所以你需要將它設置爲string.Empty,如果null不適合你。

字段的初始值(無論是靜態字段還是實例字段)是字段類型的默認值。

一個變量的默認值取決於變量的類型和被確定爲如下:

  • 對於value-type的一個變量,默認值是與由所計算的值值類型的默認構造函數
  • 對於引用類型的變量,默認值爲null
0

不,你不必這麼做。調用類構造函數時,所有屬性值都會自動設置爲默認值。有關C#中默認值的信息,請參閱this page

但是,如果您希望字符串爲空而非空,或者您是否想要自動初始化集合(例如列表),您可能需要考慮它。你所做的一切並不是不好的做法,只是不必要的。

0

顯然,在你的例子中,你不能在屬性本身中設置它們,因爲你沒有明確的後備變量。

當您在構造函數中設置默認值,這很好,但你必須要小心,總是叫別人該構造函數,你可能有,如:

public Foo() { 
    this.Happy = true; 
    this.BasicUnit = 92; 
} 

public Foo (bool happy) : this() { 
    this.Happy = happy; 
} 

它可以得到爲有點混亂什麼是什麼。因此,我個人喜歡在支持變量中顯式設置默認值。

- 編輯:我看到我可能誤解了你的問題 - 正如其他人所說的,所有成員變量都被賦予默認值,而局部變量則不是。

相關問題