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
相关产品推荐
相关产品推荐

