所以,Iv'e在學習C#最近,但有一件事我找不出或找到答案:何時分配類型?
考慮一下:
class Class1 {
int myInt = 32;
}
這:
class Class1 {
int myInt;
public Class1(){
myInt = 32;
}
}
我只想知道何時以及爲什麼我應該使用一種方法來分配或實例化值。
所以,Iv'e在學習C#最近,但有一件事我找不出或找到答案:何時分配類型?
考慮一下:
class Class1 {
int myInt = 32;
}
這:
class Class1 {
int myInt;
public Class1(){
myInt = 32;
}
}
我只想知道何時以及爲什麼我應該使用一種方法來分配或實例化值。
它的味道或編碼貴公司的標準的問題。
我的經驗法則是,如果我的所有構造函數分配相同的值給一個變量,我用的是第一種形式;如果值來自外部,或者不同的構造函數將不同的值賦給變量,我使用第二種形式。
這主要是達到個人喜好或編碼約定爲您的項目,如果你在行業工作,即沒有初始化的成員變量「對」或「錯」的方式。最後,重要的是你如何做到一致。
首先,你必須初始化在構造函數當初始化需要參照「這個」,或隱或顯:
class C
{
int x = MakeX();
int MakeX() { whatever }
}
這是非法的,因爲調用是隱式this.MakeX()
和你還沒有運行ctor,因此使用this
可能是錯誤的。這是合法的:
class C
{
int x;
int MakeX() { whatever }
public C() { this.x = this.MakeX(); }
}
,因爲很明顯,我們不能限制在構造函數體本身使用this
。
還要注意的是,爲了運行領域初始化從最派生到最少派生和運行第一。基類的構造函數,以便運行從至少衍生於大多數衍生和運行秒。這很少有關係,但無論如何知道這很有幫助。
一般的建議只不過是「保持一致」。不要使用初始化程序初始化一些字段,有的使用ctor正文中的語句初始化;選擇一個並始終如一地執行。
我認爲第一種方法是私人或我們稱之爲'encapsulate'在那'myInt'私會非成員,但另一方面是一個將提供給公衆成員函數來顯示或更改變量。 – Ali 2012-04-17 00:22:29
這可能是一個非常主觀的問題,每個程序員都會有自己的偏好。但是,我建議第二個更清晰,因爲您不必搜索全部類定義來查找新實例的默認值。 – mellamokb 2012-04-17 00:23:24