Почему я получаю ошибку" не содержит конструктора, который принимает 0 аргументов"? С#

на моей загрузке формы у меня есть этот код:

    private void Form1_Load(object sender, EventArgs e)
    {
        CharityCyclists cyclist1 = new CharityCyclists();
        CharityCyclists cyclist2 = new CharityCyclists("a", 1, "Finished", 0, 0, 0, "One Wheel", 1, 500);

        cyclist1.Type = "Novelty Charity Cyclist";
        cyclist1.Number = 1;
        cyclist1.Finished = "Not Finished";
        cyclist1.Hours = 0;
        cyclist1.Mins = 0;
        cyclist1.Secs = 0;
        cyclist1.Bicycle = "Tricycle";
        cyclist1.Wheels = 3;
        cyclist1.FundsRaised = 300;
    }
, Я получаю ошибки, говоря: "'CycleEvent.CharityCyclists "не содержит конструктора, который принимает 0 аргументов", он говорит, что ошибка связана с этой частью кода:
CharityCyclists cyclist1 = new CharityCyclists();

вот мой класс CharityCyclists:

class CharityCyclists : Cyclists
{
    private string bicycle;
    private int wheels;
    private double fundsRaised;

    public string Bicycle
    {
        get { return bicycle; }
        set { bicycle = value; }
    }

    public int Wheels
    {
        get { return wheels; }
        set { wheels = value; }
    }

    public double FundsRaised
    {
        get { return fundsRaised; }
        set { fundsRaised = value; }
    }

    public CharityCyclists(String type, int number, String finished, int hours, int mins, int secs, string bicycle, int wheels, double fundsRaised) : base(type, number, finished, hours, mins, secs, fundsRaised)
    {
        this.bicycle = bicycle;
        this.wheels = wheels;
        this.FundsRaised = fundsRaised;
    }

    public override string ToString()
    {
        return base.ToString() + " riding a " + bicycle + " with " + wheels + " wheels" ;
    }
}

спасибо!

10 ответов


вот ведь CharityCyclists класс не имеет конструктора, который не принимает аргументов.

компилятор C# создаст для вас конструктор по умолчанию,если вы не определяете никаких других конструкторов. Если вы сами определяете конструктор (как у вас есть), компилятор C# не будет генерировать конструктор по умолчанию.

Если вы хотите разрешить CharityCyclists чтобы быть построенным без параметров, добавьте этот код в класс:

public CharityCyclists() 
{}

когда вы предоставили конструктор для своего класса, который принимает аргументы, компилятор больше не создает пустой конструктор.

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


у вас нет consturctor, который не принимает никаких аргументов.

вы должны добавить

public CharityCyclists()
{
    this.bicycle = "bike";
    this.wheels = 2;
    this.FundsRaised = 0;
}

или что-то в этом роде


при создании конструктора, не содержащего 0 аргументов, автоматически удаляется значение по умолчанию конструктор. Вы должны создать новый конструктор по умолчанию (без аргументов) и что будет заботиться о проблеме.


Если у вас нет конструкторов, C# неявно создаст для вас пустой. Это функционально то же самое, что вы пишете:

public CharityCyclists()
{
}

Это только если у вас есть нет конструкторы, хотя. У тебя есть один, так что этого не случится. Вы должны явно создать конструктор, который не принимает никаких параметров.


у вас нет конструктора для этого класса, который не имеет аргументов. Единственный конструктор у вас принимает параметры. Добавьте это в свой класс:

public CharityCyclists() { } 

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


добавить это CharityCyclists класс:

public CharityCyclists()
{
}

вы не можете закодировать строку:

CharityCyclists cyclist1 = new CharityCyclists();

Если у вас нет этого конструктора.


в .NET конструктор no args (без параметров) неявно существует, если другие конструкторы не были объявлены. После объявления конструктора с параметрами необходимо также явно объявить другой конструктор без параметров для продолжения компиляции кода.


вы пытаетесь создать экземпляр cyclist1 экземпляр класса CharityCyclists без каких-либо аргументы-для этого требуется конструктор без аргументов.

но определение класса CharityCyclists имеет только один конструктор с 9 аргументами. Поскольку этот конструктор требует 9 аргументов, cyclist1 не будет соответствовать этому конструктору. Вам нужен конструктор, который не принимает аргументов, как в:

public CharityCyclists()
{
    this.bicycle ="";
    this.wheels = 0;       
    this.FundsRaised = 0.0;
}