2010-12-16 166 views
4

2個初始化中的哪一個更好?構造函數內部或外部的成員初始化

public class ServiceClass 
{ 
    private DataManager dataManager = new DataManager(); 
    private Dictionary<string, string> stringDictionary = new Dictionary<string, string>(); 
    private Dictionary<string, DateTime> timeDictionary = new Dictionary<string, DateTime>(); 
    public ServiceClass() 
    { 
     //other object creation code 
    } 
} 

OR

public class ServiceClass 
{ 
    private DataManager dataManager; 
    private Dictionary<string, string> stringDictionary; 
    private Dictionary<string, DateTime> timeDictionary; 
    public ServiceClass() 
    { 
     dataManager = new DataManager(); 
     stringDictionary = new Dictionary<string, string>(); 
     timeDictionary = new Dictionary<string, DateTime>(); 
     //other object creation code 
    } 
} 
+0

[最佳實踐:初始化構造函數或聲明中的類字段?]的可能的重複?(http://stackoverflow.com/questions/24551/best-practice-initialize-class-fields-in-constructor-or-at -宣言) – Gishu 2010-12-16 02:49:04

回答

2

既然你有明確的構造函數其他代碼(「其他對象創建代碼」),我寧願把所有的初始化那裏。

4

我寧願使用構造函數。

這是因爲我們殘酷地發現的一個問題是,通過序列化器(在這種情況下是數據協定序列化器)重建的對象沒有調用它們的字段初始值設定項。另外,它確保所有的初始化邏輯相應地組合在一起,而不是貫穿整個代碼(任何你喜歡定義字段變量的地方)。

相關問題