C# 为什么从类派生会导致有关父构造函数的错误?

C# 为什么从类派生会导致有关父构造函数的错误?,c#,.net,class,constructor,C#,.net,Class,Constructor,我当前的代码如下所示 this.actHandler = new MainAct(reqParams[2], new DatabaseHandler()); RegisterAct regAct = new RegisterAct(); return regAct.RegisterAction(); MainAct类 class MainAct { protected DatabaseHandler dbh; protected MySqlConnection db;

我当前的代码如下所示

this.actHandler = new MainAct(reqParams[2], new DatabaseHandler());

RegisterAct regAct = new RegisterAct();

return regAct.RegisterAction();
MainAct类

class MainAct
{
    protected DatabaseHandler dbh;

    protected MySqlConnection db;

    protected MySqlDataReader reader;

    protected MySqlCommand cmd;

    protected string param;

    public MainAct(string param, DatabaseHandler dbHandler)
    {
        this.param = param;
        this.dbh = dbHandler;
        this.db = this.dbh.ConnectDatabase();
    }
}
class RegisterAct : MainAct
{
    public string RegisterAction()
    {

    }
}
RegisterAct类

class MainAct
{
    protected DatabaseHandler dbh;

    protected MySqlConnection db;

    protected MySqlDataReader reader;

    protected MySqlCommand cmd;

    protected string param;

    public MainAct(string param, DatabaseHandler dbHandler)
    {
        this.param = param;
        this.dbh = dbHandler;
        this.db = this.dbh.ConnectDatabase();
    }
}
class RegisterAct : MainAct
{
    public string RegisterAction()
    {

    }
}
我得到了以下错误:

BloodServer.act.MainAct不包含具有0个参数的构造函数

这是在父类中,我想我已经替换了它。

父构造函数仍然被调用吗?是否有办法更改此设置?

在RegisterAct类中,您需要添加一个构造函数,该构造函数使用正确的参数调用基本构造函数:

class RegisterAct : MainAct
{
    public RegisterAct(string param, DatabaseHandler dbHandler) : base(param, dbHandler)
    {
    }

    // Other methods/code here
}

它必须知道如何构造派生类的基类部分。默认情况下,它将调用基类上的无参数构造函数。因为你没有,它告诉你它不能调用它,因为它不存在

这就是为什么需要在基类上实现无参数构造函数,或者最好调用重载构造函数

要么像这样:

public RegisterAct() : base("value for param", new DatabaseHandler())
{ }
或者这个:

public RegisterAct(string param, DatabaseHandler dbHandler) : base(string param, DatabaseHandler dbHandler)
{ }

对请看@Alvaro:需要更多帮助吗?