添加没有任何参数的构造函数有什么好处吗?

Nik*_*iko 3 c# constructor

我是C#的新手,正在MSDN阅读关于该virtual关键字的文章.在他们的示例代码中,他们创建了以下类:

public class Dimensions
{
    protected double x, y;

    public Dimensions()
    {
    }

    public Dimensions(double x, double y)
    {
        this.x = x;
        this.y = y;
    }

    public virtual double Area()
    {
        return x * y;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么他们添加第一个构造函数(不需要任何参数的构造函数)?我得到两个double值xy默认为0,因此添加此构造函数不会受到影响.但是我现在已经多次看过这个了,因此我想知道在添加这样的构造函数背后是否有任何特殊原因?我应该经常这样做吗?

bas*_*bas 10

默认情况下,类包含默认构造函数.添加参数化构造函数时,default provided构造函数不再存在.

因此,如果您需要无参数构造函数,则需要在添加参数化构造函数后手动添加它.

所以,完全回答你的问题.不,您不必添加默认构造函数.但在这种情况下,类的作者允许创建一个新Dimensions对象,其中值默认为0.


作为Vlad关于序列化的答案的旁注:

如果您只需要一个无参数构造函数来进行序列化,那么最好知道您可以将构造函数标记为private(或protected)构造函数.序列化(或者,在这种情况下反序列化)可以访问private构造函数,而业务逻辑则不能.这样,您就不必"污染"面向业务逻辑的界面.