基本クラスがデフォルトのコンストラクターを定義していない限り、基本クラスのコンストラクターを明示的に呼び出す必要があります。そうです、それらは継承されません。
これは、あるコンストラクターから別のコンストラクターに引数を渡す以外に何もしないボイラープレートコードの束につながることがあります
public class NegativArgument : Exception {
public NegativeArgument() : this("The number given was less than zero"){}
public NegativeArgument(string message) : this(message,null){}
public NegativeArgument(string message, Exception inner) : base:(message,inner){}
}
しかし、常に同じメッセージを持つはずの例外タイプがある場合はどうでしょうか。コンストラクターが継承された場合、どのように解決しますか?例外クラスにはメッセージを受け入れるコンストラクターがあるため、新しいExceptionタイプを作成すると、そのコンストラクターも取得されます。コンストラクターを継承しないと、簡単になります。
public class NegativArgument : Exception {
public NegativeArgument() : base("The number given was less than zero"){}
}
基本クラスにデフォルトのコンストラクターがない場合、基本クラスのコンストラクターを明示的に呼び出さないと、コンパイルエラーが発生します。