2012-09-11 32 views
2

類構造函數是設置變量默認值的最佳位置嗎?什麼是設置變量默認值的好地方?

在我繼承的大部分代碼中,似乎都是這種情況。

public class foo 
{ 
    public bool IsAcidic { get; set; } 

    public foo() 
    { 
     IsAcidic = false; 
    } 
} 

這是你會怎麼做呢?

+0

@Adam, 你是如何格式化代碼的?你真的進入了這麼多的空間嗎?還是有一些關於標籤的東西,我不知道? – abhi

+1

看一看:[如何格式化我的代碼塊?](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) –

回答

4

如果您想爲該特定對象的任何實例指定一些默認值,那麼YES,構造函數是爲它們分配默認值的最適合的位置,但是如果要將類型的默認值分配給該字段,則你不必做任何事情。字段將在構造函數之前使用該類型的默認值進行初始化。例如,如果您有一個int類型字段,默認情況下它將被分配0,您不必在構造函數中執行任何操作。

0

您應該儘量將變量設置爲一個值(顯式或隱式)以儘可能接近該變量的創建。

這是C99(作爲一個例子)開始發光的地方。直到那一刻,你必須在函數開始時創建變量,即使你在那時可能不知道它們應該是什麼。通過斷開連接,很難跟蹤哪些變量設置爲什麼值。當C99引入了在功能中間創建新變量的能力時,斷開連接就消失了。

因此,對於您的示例,最好在構造函數中設置默認值,因爲這是變量存在的地方。

如果做在構造函數(例如,它在init方法調用完成),那麼這是不是默認值,僅僅是因爲當這些變量被設置到別的時間。

相關問題