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

不,这是不可能的。

实现此行为的一种方法是将基本构造函数的内容提取到一个方法中,然后从子类中调用该方法。

另一个不太紧密的方法是在这里不使用继承。在这种情况下,组合可能更有意义。(不过,如果不知道更多信息,就不可能肯定地说。)

于 2012-09-18T13:40:41.930 回答
1

正确的语法是

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

  }
}

这是使用构造函数的链接。直接在ctor的体内调用它是不可能的。

于 2012-09-18T13:43:53.003 回答
1

不,因为//Check some preconditions你会有一个部分构造的对象。这会导致各种各样的问题。

于 2012-09-18T13:40:25.190 回答