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

抽象类Character派生类Player构造函数报错,求base用法及解决方案

C#抽象类继承构造函数报错与base关键字解析

报错原因

你的代码里,Character抽象类只定义了一个带string name参数的构造函数,没有提供无参构造函数。C#中,当子类(比如Player)没有显式定义构造函数时,编译器会自动生成一个无参构造函数,这个自动生成的构造函数会默认调用父类的无参构造函数。但你的Character类不存在无参构造函数,所以就会抛出你看到的错误:没有对应Character.Character(string)所需参数的实参。

base关键字的作用

base关键字在这里的作用是显式调用父类的指定构造函数。当子类构造函数后面加上: base(参数),就表示在执行子类构造函数的代码之前,先调用父类中匹配参数的构造函数,把参数传递给父类,让父类完成自身的成员初始化(比如这里的Name属性赋值)。

解决代码

把你注释掉的Player构造函数取消注释即可,这样就能将name参数传递给父类的构造函数,完成父类的初始化,解决报错:

public abstract class Character
{
    string Name { get; set; }
    public Character(string name)
    {
        Name = name;
    }
}

public class Player : Character
{
    public Player(string name) : base(name)
    {
        // 这里可以添加Player类自己的初始化逻辑,如果有的话
    }
}

内容的提问来源于stack exchange,提问作者Abhishek Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:26:58