具有完全可选参数的构造函数是不好的做法吗?

时间:2018-07-12 18:04:41

标签: c#

在为C#项目设计类结构时,我想到了一个有趣的问题,希望在完成设计之前能对此有所了解。这是我正在谈论的概念的模板设计:

class TemplateClass
{
    public TemplateClass(int input1 = 0, string input2 = "")
    {
        field1 = input1;
        field2 = input2;
    }
    public TemplateClass()
    {
        field1 = 0;
        field2 = "";
    }
    public int field1;
    public string field2;
}

就我正在做的目的而言,这似乎是一个非常方便的设计,但是我很好奇这是否由于任何原因被认为是不好的做法。

1 个答案:

答案 0 :(得分:1)

无论如何,由于您的字段是公共的,所以我看不到构造函数为其添加的任何值,因为您可以在构造期间指定它们:

new TemplateClass();
new TemplateClass { field1 = 17 };
new TemplateClass { field2 = "hello" };
new TemplateClass { field2 = "world", field1 = 42 };

您班级的代码将减少为:

class TemplateClass
{
    public int field1 = 0;
    public string field2 = "";
}

请注意,除非您打算将这些字段用作某个地方的ref参数,否则我还将它们转换为public int Field1 { get; set; }之类的属性。