首页 > 解决方案 > 具有完全可选参数的构造函数是不好的做法吗?

问题描述

在为 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;
}

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

标签: c#

解决方案


由于您的字段无论如何都是公开的,因此我看不到您的构造函数添加到其中的任何值,因为您可以在构造过程中指定它们:

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


推荐阅读