Я получаю сообщение об ошибке «Не содержит конструктора, который принимает 0 аргументов» из моего кода C # ниже:

 public class Holiday
{

    string startDate, endDate, firstName, lastName, emailAddress, numberOfGuests;
    private double Cost = 100;
    public Holiday(string start, string end, string first, string last, string email, string guestCount)
    {
        startDate = start;
        endDate = end;
        firstName = first;
        lastName = last;
        emailAddress = email;
        numberOfGuests = guestCount;
    }

    public double test
    {
        get { return Cost; }
    }
}
 public class AdventureHoliday : Holiday
{
    public AdventureHoliday(string start, string end, string first, string last, string email, string guestCount)
        : base(start, end, first, last, email, guestCount)
    {
    }
    public double totalcost()
    {
        double adventureAdditional = 0.50;
        double xcost = test + (test * adventureAdditional);
        return xcost;
    }
}

public class CulturalHoliday : Holiday
{

    public CulturalHoliday(string start, string end, string first, string last, string email, string guestCount)
        : base(start, end, first, last, email, guestCount)
    {
    }
    public double totalcost()
    {
        double culturalAdditional = 1.0;
        double xcost = test + (test * culturalAdditional);
        return xcost;
    }

Я просмотрел различные темы для этой проблемы, и все они, похоже, указывают на то, что проблема должна быть решена путем добавления:

: base(start, end, first, last, email, guestCount)

Я добавил это ко второму классу, но по-прежнему получаю сообщение об ошибке. Я получаю это как для Adventure Holiday, так и для Cultural Holiday на линиях 201 и 125 (общественный класс AdventureHoliday: Holiday).

А также

public class CulturalHoliday : Holiday

У кого-нибудь есть какие-либо идеи? Извините, если я упустил какую-то глупость. заранее спасибо

2
user3174012 8 Янв 2014 в 19:58

2 ответа

Лучший ответ

Вам необходимо вручную добавить конструктор по умолчанию parameterless

public Holiday ()
{ 
   ...
}

Вероятно, вы пытаетесь создать экземпляр Holiday без передачи каких-либо параметров, подобных этому:

var holiday = new Holiday();

Или же:

var cultural = new CulturalHoliday();

По умолчанию все классы наследуют конструктор без параметров по умолчанию от класса Object. Но если вы добавляете конструктор, который принимает некоторые аргументы, вам нужно добавить конструктор без параметров вручную.

3
Selman Genç 27 Мар 2015 в 11:24

Проблема в другом, вам не нужен конструктор без параметров, если класс не сериализуется.

Вы должны предоставить дополнительную информацию, то есть точную строку, из которой возникла ошибка, конструктор класса Holiday (по крайней мере, подпись) и от каких классов наследуется класс Holiday.

0
JuanR 8 Янв 2014 в 16:07