如何在类中调用构造函数?

Ken*_*hou 10 c#

我想在类中调用构造函数,如:public class Myclass(){

   public MyClass(){
      //......
   }

   public MyClass(int id):this(){
      //......
   }

   private void Reset(){
      //.....
      this = new MyClass(id);    //here I want to call constructor
      //......
   }
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.是否可能,如果是,我该怎么办?

Jus*_*ner 15

简单回答:你做不到.

稍微复杂的答案:将初始化逻辑移动到可以从构造函数和Reset()方法中调用的单独方法中:

public class MyClass
{
    public int? Id { get; }

    public MyClass()
    {
        Initialize();
    }

    public MyClass(int id)
    {
        Initialize(id);
    }

    public Reset()
    {
        Initialize();
    }

    private Initialize(int? id = null)
    {
        // initialize values here instead of the constructor
        Id = id;
    }
}
Run Code Online (Sandbox Code Playgroud)


Tim*_*ter 12

你不能.但你可以做的是将构造函数逻辑拆分为Initialize方法,然后重置可以调用.

   public MyClass(){
   //......
   }

   public MyClass(int id):this(){
      Initialize(id);
   }

   private void Initialize(int id){
   //....
   }

   private void Reset(){
      //.....
      Initialize(id);
      //......
   }
}
Run Code Online (Sandbox Code Playgroud)