我是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值x并y默认为0,因此添加此构造函数不会受到影响.但是我现在已经多次看过这个了,因此我想知道在添加这样的构造函数背后是否有任何特殊原因?我应该经常这样做吗?
bas*_*bas 10
默认情况下,类包含默认构造函数.添加参数化构造函数时,default provided构造函数不再存在.
因此,如果您需要无参数构造函数,则需要在添加参数化构造函数后手动添加它.
所以,完全回答你的问题.不,您不必添加默认构造函数.但在这种情况下,类的作者允许创建一个新Dimensions对象,其中值默认为0.
作为Vlad关于序列化的答案的旁注:
如果您只需要一个无参数构造函数来进行序列化,那么最好知道您可以将构造函数标记为private(或protected)构造函数.序列化(或者,在这种情况下反序列化)可以访问private构造函数,而业务逻辑则不能.这样,您就不必"污染"面向业务逻辑的界面.