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

C#继承场景下为何派生类无法直接使用继承自基类的成员?

C#继承场景下两处报错的根源说明

你对类继承的核心理解没有偏差:派生类确实可以直接访问基类的public修饰的成员,两处报错和继承权限逻辑无关,完全是代码书写的语法位置、书写格式不符合C#规则导致的。

第一处报错:类内直接对brand赋值的问题

  • 类的大括号包裹的顶层作用域,仅允许做「类型成员声明」(比如定义字段、属性、方法、构造函数的结构),不允许直接写执行逻辑类语句。
  • 你写的brand = "WHY İS NOT ??? "属于需要执行的赋值语句,和同级写的public string modelName = "Mustang";本质不一样:后者是字段的初始化声明,前者是独立的执行操作,直接摊在类顶层是不符合语法的。
  • 你之前测试把这段赋值写在Main方法中可以正常运行,恰好印证了这个点:方法体内部是允许写执行赋值、方法调用这类逻辑语句的,继承来的public brand字段在这里完全可以被正常访问。
  • 正确写法:把对brand的赋值逻辑放到构造函数、实例方法等方法体内部即可,比如:
    class Car : Vehicle
    {
        public string modelName = "Mustang";
        // 把赋值逻辑放到构造函数的方法体中
        public Car()
        {
            brand = "WHY İS NOT ??? ";
        }
    }
    

第二处报错:public void honk();的问题

  • 普通类中的普通方法必须带完整的大括号方法体,不能只写方法签名加结尾分号。这种空方法签名的写法,仅在接口、抽象类定义抽象方法、声明extern方法时合法。
  • 如果你是想重写基类的honk()方法,仅靠现在的写法也完全不符合语法要求:需要先把基类的honk方法标记为virtual,在派生类中用override关键字修饰,同时补充完整方法体才可以正常编译。

新手刚接触类结构时很容易混淆「类顶层作用域的可写内容」和「方法体内部的可写内容」,所有需要执行的运行逻辑,都不能直接放在类的顶层大括号层级下。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 01:36:06