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;
}
就我正在做的事情而言,这似乎是一个非常方便的设计,但我很好奇这是否出于任何原因被认为是不好的做法。
解决方案
由于您的字段无论如何都是公开的,因此我看不到您的构造函数添加到其中的任何值,因为您可以在构造过程中指定它们:
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; }
.
推荐阅读
- c++ - std::setw() 没有给出想要的结果
- c++ - 将文件加载到结构中
- java - 在 github 上设置 maven 工作流时,我不断收到此错误:“构建无法读取 1 个项目 - > [Help 1]”
- c - 我有 uint8_t 错误的问题,我无法 printf(integer)
- sql - 如何在 Looker 中按日期计算状态变化?
- c++ - 如何将表格从文本文件传输到 C++
- angular - 如何在角度中向数据属性添加多行
- jenkins - 如何在 Jenkins 中运行管道作业时解决崩溃
- mysql - 如何在不使用排名功能的情况下更新表格中的分数
- google-cloud-bigtable - 在不知道确切行键的情况下在 Bigtable 中查找最新时间戳