我是一个非常新的程序员,并且了解到我们希望最大程度地减少代码冗余,因此在我们进行更新时,我们可以进行尽可能少的更改,并最大程度地减少错误。
所以我有一个Student类,我想重载构造函数,所以如果我进行反向链接,它就是这样。
public class Student
{
string name;
int Id;
public Student()
{
}
public Student(string name)
{
this.name = name;
}
public Student(string name, int Id) :this(name)
{
this.Id = Id;
Run Code Online (Sandbox Code Playgroud)
但这显然是不好的,因为出于某种原因我们希望所有代码都在一个构造函数中?易于阅读?
public Student() : this(null, 0)
{ }
public Student(string name) : this(name, 0)
{ }
public Student(string name, int Id)
{
this.name = name;
this.Id = Id;
}
Run Code Online (Sandbox Code Playgroud)
如果我进行前向链接,那么如果我们添加一个新的字段(例如字符串major)会怎样?如果我进行正向链接,则会使用添加的字段创建一个新的重载构造函数。但是现在我必须更改所有其他构造函数以调用新的构造函数。如果我进行反向链接,则只需创建一个新的构造函数并调用先前的重载构造函数即可。
public Student(string name, int Id, string major):this(name, Id)
{
this.major=major;
}
Run Code Online (Sandbox Code Playgroud)
这似乎更好地遵循了OOP,但是我的教科书中的所有示例都显示了正向链接,并且没有说为什么不应该使用反向链接。
如果我使用命名/可选参数,则更加简单。
public Student(string name = null, …Run Code Online (Sandbox Code Playgroud)