1

次のように、サブクラスのコンストラクターの特定のポイントでベースコンストラクターを呼び出すことは可能ですか?

public class SuperClass
{
  public SuperClass(Object myObject)
  {
     // init some values ...
  }
}

public class SubClass: SuperClass
{
  public SubClass(): base(Object myObject)
  {
     //Check some preconditions
     base(myObject);
     // Do some other stuff
  }
}
4

3 に答える 3

2

いいえ、できません。

この動作を実現する1つの方法は、基本コンストラクターの内容をメソッドに抽出し、そのメソッドをサブクラスから呼び出すことです。

もう1つのあまり密接に結びついていない方法は、ここで継承を使用しないことです。これは、構成がより理にかなっている状況である可能性があります。(しかし、より多くの情報を知らずに確実に言うことは不可能です。)

于 2012-09-18T13:40:41.930 に答える
1

いいえ、//Check some preconditions部分的に構築されたオブジェクトがあるためです。これはあらゆる種類の問題につながるでしょう。

于 2012-09-18T13:40:25.190 に答える
1

正しい構文は

public class SubClass: SuperClass
{
  public SubClass(object myObject): base(myObject)
  {

  }
}

コンストラクターの使用のリンクは次のとおりです。ctorの体内で直接呼び出すことはできません。

于 2012-09-18T13:43:53.003 に答える