构造函数调用构造函数更好吗?

时间:2018-04-10 06:04:59

标签: c#

我已经提交了一段代码供审阅,我得到的反馈是,更好的做法是让构造函数调用构造函数而不是像下面的set语句重复:

    public GenericFileReader(string fileName)
    {
        _filename = fileName;
        _encoding = Encoding.GetEncoding("windows-1252");
    }

    public GenericFileReader(string fileName, Encoding encoding)
    {
        _filename = fileName;
        _encoding = encoding;
    }

我理解有一种方法可以使构造函数调用构造函数如下所示:

    public GenericFileReader(string fileName) : 
        this(fileName, Encoding.GetEncoding("windows-1252"))
    {
    }
    public GenericFileReader(string fileName, Encoding encoding)
    {
        _filename = fileName;
        _encoding = encoding;
    }

第二个在减少代码行数方面似乎很好。我仍然不相信第二种方法比早期方法更好。因为,调用构造函数两次似乎比设置编码和文件名更昂贵。请告诉我哪种方法更好?

1 个答案:

答案 0 :(得分:1)

就我个人而言,我更喜欢拥有1个构造函数,并让它调用类似下面的子函数来处理更复杂的东西。

编辑:请参阅Zohar对此回复的评论,了解为何不重载构造函数。

您最好的例子(IMO)

我选择了这个,因为当我不使用中心函数供构造函数使用时,我更喜欢它的可读性。但我通常有我的核心功能,如下图所示。

fdtdump dtb_file.dtb > /tmp/test.txt 

对于更复杂的构造函数,但使用您的示例

public GenericFileReader(string filename) 
{
    _filename = filename;
    _encoding = Encoding.GetEncoding("windows-1252");
}

public GenericFileReader(string filename, Encoding encoding)
{
    _filename = filename;
    _encoding = encoding;
}

在底部的情况下,你可以让多个重载的构造函数以不同的方式调用init函数。