从另一个构造函数调用构造函数

Nit*_*its 5 c# java oop

我想做这样的事情

public class Class1
    {
       public Class1()
       {

       }
       public Class1(int a)
       {

       }
    }
   public class Class2 :Class1
    {
       public Class2(int a)
       {

       }
       public Class2(): base(2)
       {
         this(2);   // new Class2(2);
       }

    }
Run Code Online (Sandbox Code Playgroud)

我知道这不能用Java实现(可以在第一行中使用一个(super或this))

但不知何故,我需要这种工作如何实现这一目标?意味着在派生类的默认构造函数中调用基类的参数化和派生类的参数化构造函数.

Igo*_*aka 9

关于构造函数的MSDN文章相当不错.以下是一些相关的内容:

构造函数可以使用base关键字来调用基类的构造函数.
....
构造函数可以使用this关键字在同一对象中调用另一个构造函数.与base类似,可以使用或不使用参数,构造函数中的任何参数都可以作为参数或作为表达式的一部分使用.

这应该工作:

public class Class1
{
   public Class1()
   {

   }
   public Class1(int a)
   {

   }
}
public class Class2 :Class1
{
   public Class2(int a) : base(a)
   {

   }
   public Class2(): this(2)
   {
   }

}
Run Code Online (Sandbox Code Playgroud)

  • 是的,你不能这样做,你只能调用*一个其他构造函数*,而不是两个.我认为你应该重新考虑需要以这种方式调用构造函数的设计. (2认同)