Невозможно наследовать конструктор, ссылка на объект обязательна - PullRequest
0 голосов
/ 09 апреля 2020

Обратите внимание:

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 ошибки:

Требуется ссылка на объект для нефиксированного поля, метода или свойства c World.dest

Отсутствует частичный модификатор при объявлении типа 'Program'

Я хочу, чтобы все классы были в одном файле.

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Неясно, что dest вы пытаетесь передать конструктору базового класса. Вы не можете передать ссылку на поле экземпляра, который еще не был создан.

Вы должны либо добавить параметр в конструктор Client и передать его базовому конструктору:

public Client(char[] name, char[] surname, int age, int noCounter, bool hasVehicle,
    char[] dest) : base(dest)
{
    this.name = name;
    this.surname = surname;
    this.age = age;
    this.noCounter = noCounter;
    this.hasVehicle = hasVehicle;
}

Или вы должны передать какое-то значение по умолчанию, например, null или пустой массив:

public Client(char[] name, char[] surname, int age, int noCounter, bool hasVehicle) : base(default)
1 голос
/ 09 апреля 2020

Вам нужно передать действительное значение, чтобы инициализировать dest. dest не определен в csope конструктора, вы вызываете базовый ctor и должны intialz ie it.

вы можете передать имя или surename или добавить другой параметр и использовать его.

Что касается частичной ошибки, возможно, у вас уже есть класс Program, определенный где-то еще в вашем коде, и вы не можете объявить 2 класса с одинаковым именем.

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...