これはあなたの質問に直接答えるものではありません。しかし、コンストラクタの大半が前のコンストラクタに新しいパラメータを導入するだけの場合は、オプションの引数(C#4で導入されている)を利用して、定義するコンストラクタの数を減らすことができます。例えば
:
public class BaseClass
{
private int x;
private int y;
public BaseClass()
: this(0, 0)
{ }
public BaseClass(int x)
: this(x, 0)
{ }
public BaseClass(int x, int y)
{
this.x = x;
this.y = y;
}
}
public class DerivedClass : BaseClass
{
public DerivedClass()
: base()
{ }
public DerivedClass(int x)
: base(x)
{ }
public DerivedClass(int x, int y)
: base(x, y)
{ }
}
以上に減少させることができます。
public class BaseClass
{
private int x;
private int y;
public BaseClass(int x = 0, int y = 0)
{
this.x = x;
this.y = y;
}
}
public class DerivedClass : BaseClass
{
public DerivedClass(int x = 0, int y = 0)
: base(x, y)
{ }
}
そして、それはまだあなたが任意の数の引数でBaseClass
とDerivedClass
の両方を初期化することが可能になります。
var d1 = new DerivedClass();
var d2 = new DerivedClass(42);
var d3 = new DerivedClass(42, 43);
[コンストラクタの継承方法](http:// stackove rflow.com/questions/223058/how-to-inherit-constructors) –
あなたがしていることは正確に正しいです。コンストラクタは継承されません。新しいサブクラスごとに再宣言する必要があります。 –