【发布时间】:2020-07-22 03:31:59
【问题描述】:
考虑:
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;
public Client(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;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
我收到 2 个错误:
非静态字段、方法或属性“World.dest”需要对象引用
“程序”类型的声明缺少部分修饰符
我希望所有类都在同一个文件中。
【问题讨论】:
-
您必须将
dest作为参数传递给构造函数,即使您将初始化委托给基类。我也可以建议string而不是char[]吗?使用起来更容易。 -
base(dest: dest)喜欢这样吗? -
只需将 'char[] dest' 像这样添加到 public Client(char[] name, char[] surname, int age, int noCounter, bool hasVehicle, char[] dest)
-
我把
char[]改成string,出现同样的错误。 -
你有
public Client(char[] name, char[] surname, int age, int noCounter, bool hasVehicle) : base(dest)。在定义dest之前,您不能调用base(dest)。例如,您可以传递base(name),或者您可以将dest添加到World构造函数的参数列表中。而且,正如@PatrickRoberts 指出的那样,您真的想了解char[]和string之间的区别(并了解您不希望在这里使用char[]。
标签: c# inheritance constructor derived-class