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 :(得分:4)
我更喜欢使用构造函数。
这是因为我们残酷地发现的一个问题是通过序列化器重建的对象(在这种情况下是数据协定序列化器)没有调用它们的字段初始化器。
此外,它确保所有初始化逻辑相应地组合在一起,而不是潜在地散布在整个代码中(无论您希望定义字段变量)。
答案 1 :(得分:2)
由于在显式构造函数中有其他代码(“其他对象创建代码”),我宁愿在那里进行所有初始化。