是否可以从其父类的构造函数返回子类

Rom*_*Coo 1 c# inheritance constructor class

我知道这不起作用,因为类的构造函数是一个void:

class ParentClass
{
    public ParentClass(int case)
    {
       if(case==1) 
           return new ChildClass1();
       else 
           return new ChildClass2();
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点.

pwa*_*was 7

不,没有办法,但......听起来像是作为静态方法实现的工厂模式:

class ParentClass
{ 
    // "disable" ctor for public use but 
    // allow for children
    protected ParentClass() { }

    public static ParentClass CreateInstance(int @case)
    {
       if(@case==1) 
           return new ChildClass1();
       else 
           return new ChildClass2();
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

var parentClass=  ParentClass.CreateInstance(1);
Run Code Online (Sandbox Code Playgroud)