You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#编译错误:‘无对应必需形参的实参’问题排查与解决

问题原因

你的代码报错是因为父类Vehicle只定义了带参数的构造函数,C#编译器不会为显式定义了构造函数的类自动生成默认无参构造函数。而子类Car的构造函数默认会尝试调用父类的无参构造函数,找不到就会触发编译错误。

修正方法

有两种可行的修正方案:

方案一:给父类添加无参构造函数

在Vehicle类里添加一个无参构造函数,这样子类Car的构造函数就能自动调用它:

class Vehicle
{
    public string company;
    public void ignition()
    {                 
        Console.WriteLine("Vroom Vroom");
    }

    // 添加无参构造函数
    public Vehicle() { }

    public Vehicle (string companyName)
    {
        company = companyName;
    }
}

class Car : Vehicle
{
    public string model;

    public Car (string modelName)
    {
        model = modelName;
    }
}

方案二:在子类构造函数中显式调用父类的带参数构造函数

如果需要强制Car实例必须指定所属公司,可以修改Car的构造函数,通过base关键字调用父类的带参数构造,同时传递公司名称:

class Vehicle
{
    public string company;
    public void ignition()
    {                 
        Console.WriteLine("Vroom Vroom");
    }

    public Vehicle (string companyName)
    {
        company = companyName;
    }
}

class Car : Vehicle
{
    public string model;

    // 接收公司名和车型名,用base调用父类构造
    public Car (string companyName, string modelName) : base(companyName)
    {
        model = modelName;
    }
}

如果不想让Car的构造函数接收公司参数,也可以给base传一个默认值(比如空字符串):

public Car (string modelName) : base("")
{
    model = modelName;
}

内容的提问来源于stack exchange,提问作者Hassan Abid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:35:17