C#不从基类inheritance构造函数

可能重复:
构造函数和inheritance
为什么构造函数不被inheritance?

当定义inheritance自基类的类时,我必须重新定义其所有构造函数。 我想知道为什么C#不支持从基类的构造函数inheritance?

构造函数不是inheritance的,因为我们无法正确确定派生类对象的实例化方式。 当所有派生类都隐式使用父类的构造函数时,在我看来这将是一个问题,因为如果我们忘记重新定义构造函数,那么该对象可能已被错误地初始化。 如果您希望派生类构造函数与父类构造函数执行相同操作,请使用base调用它。

还要注意,如果不调用显式获取参数的任何其他基类构造函数,则会自动运行基类构造函数(无参数)。 所以调用base() is redundant

只有成员变量和成员方法可以从一个类inheritance到派生。

派生类的构造函数隐式调用基类的构造函数或Java术语中的超类。 在inheritance中,所有基类构造函数在派生类的构造函数之前按类的层次结构中出现的顺序调用。

现在,如果基类有多个构造函数,那么派生类必须定义应该调用哪一个。 例如:

 public class CoOrds { private int x, y; public CoOrds() { x = 0; y = 0; } public CoOrds(int x, int y) { this.x = x; this.y = y; } } //inherits CoOrds: public class ColorCoOrds : CoOrds { public System.Drawing.Color color; public ColorCoOrds() : base () { color = System.Drawing.Color.Red; } public ColorCoOrds(int x, int y) : base (x, y) { color = System.Drawing.Color.Red; } } 

有关更多信息,请访问: http : //msdn.microsoft.com/en-us/library/ms228387(v = vs.80).aspx