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

C#继承中子类实例化出现两个编译错误的原因咨询

C#继承编译错误原因及修复

错误原因解析

1. 未提供ParentClass构造函数必需的'mark'参数

ParentClass只声明了带int类型参数的构造函数,没有定义无参构造函数。在C#中,子类构造函数默认会隐式调用父类的无参构造函数,但你的父类没有这个构造函数,编译器找不到合适的父类构造函数执行初始化,因此抛出该错误。

2. ChildInheritedClass没有接受1个参数的构造函数

你在Main方法里尝试用new ChildInheritedClass(600)创建子类实例,但ChildInheritedClass中未定义接受单个int参数的构造函数,编译器找不到匹配的构造函数,所以报错。

修复后的代码

using System;
namespace Fundas
{
 class ParentClass
 {
    int mark;
   public ParentClass(int mark)
   {
     this.mark = mark;
   }
  public void ParentClassMeth()
  {
     // 注意:原整数除法会丢失精度,若要正确计算百分比建议转浮点型
     // double perc = (double)this.mark / 100;
     int perc = this.mark / 100;
    Console.WriteLine("The Percentage Obtained is : {0}", perc);
  }
}
 
 class ChildInheritedClass : ParentClass
 {
    // 定义带参数的子类构造函数,通过base调用父类构造函数传递参数
    public ChildInheritedClass(int mark) : base(mark)
    {
        // 子类构造的额外逻辑可写在此处
    }

    static void Main(string[] args)
   {
       ChildInheritedClass obj = new ChildInheritedClass(600);
       obj.ParentClassMeth();
   }
 }
}

额外提示

原代码中的百分比计算用了整数除法,600/100得到的结果是6,若要显示真实百分比(如600%),建议修改为浮点型计算:double perc = (double)this.mark / 100;,避免精度丢失。

内容的提问来源于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 09:12:39