2010-12-16 99 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

我宁愿使用构造函数。

这是因为我们残酷地发现的一个问题是,通过序列化器(在这种情况下是数据协定序列化器)重建的对象没有调用它们的字段初始值设定项。另外,它确保所有的初始化逻辑相应地组合在一起,而不是贯穿整个代码(任何你喜欢定义字段变量的地方)。

相关问题