构造函数内部或外部的成员初始化

时间:2010-12-16 02:34:52

标签: c# .net coding-style

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
    }
}

2 个答案:

答案 0 :(得分:4)

我更喜欢使用构造函数。

这是因为我们残酷地发现的一个问题是通过序列化器重建的对象(在这种情况下是数据协定序列化器)没有调用它们的字段初始化器。

此外,它确保所有初始化逻辑相应地组合在一起,而不是潜在地散布在整个代码中(无论您希望定义字段变量)。

答案 1 :(得分:2)

由于在显式构造函数中有其他代码(“其他对象创建代码”),我宁愿在那里进行所有初始化。