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

C#单文件类继承报错求助:构造函数与Program类修饰符问题

解决你的C#代码错误

让我们逐个搞定你遇到的两个问题,同时保持所有类都在同一个文件里:

错误1:非静态字段、方法或属性“World.dest”需要对象引用

这个问题出在Client类的构造函数调用base(dest)时——你的Client构造函数根本没接收dest参数,编译器完全不知道你要传给父类World的dest是什么值。你需要给Client的构造函数参数列表加上char[] dest,再把它传递给父类构造函数。

错误2:类型“Program”的声明缺少partial修饰符

这个情况是因为在.NET 6及以上版本的项目中,默认模板会生成一个隐式的partial Program类(用来配合顶级语句)。如果你要自己显式定义Program类和Main方法,最简单的解决方式就是给Program加上partial修饰符。

修正后的完整代码

using System;

namespace TuristickaAgencija
{
    public class World
    {
        protected char[] dest;

        public World(char[] dest)
        {
            this.dest = dest;
        }
    }

    class Client : World
    {
        private char[] name;
        private char[] surname;
        private int age;
        private int noCounter;
        private bool hasVehicle;

        // 新增dest参数并传递给父类构造函数
        public Client(char[] dest, char[] name, char[] surname, int age, int noCounter, bool hasVehicle) 
            : base(dest)
        {
            this.name = name;
            this.surname = surname;
            this.age = age;
            this.noCounter = noCounter;
            this.hasVehicle = hasVehicle;
        }
    }

    // 添加partial修饰符
    partial class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

额外提个小建议:在C#里我们很少用char[]来存储姓名、目的地这类字符串数据,更推荐直接用string类型,操作起来会更方便,也更符合C#的编码习惯。比如把char[] name改成string name,构造函数参数也换成string name,代码会简洁很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:12:38