Ошибка C#: Parent не содержит конструктор, который принимает 0 аргументов
мой код
public class Parent
{
public Parent(int i)
{
Console.WriteLine("parent");
}
}
public class Child : Parent
{
public Child(int i)
{
Console.WriteLine("child");
}
}
Я получаю сообщение об ошибке:
Parent не содержит конструктор, который принимает 0 аргументов.
Я понимаю, что проблема в том, что Parent
не имеет конструктора с 0 аргументами. Но мой вопрос в том, зачем нам нужен конструктор с нулевыми аргументами? Почему код не работает без него?
6 ответов:
чтобы исправить ситуацию, нужно добавить явный вызов:
public Child(int i) : base(i) { Console.WriteLine("child"); }
или, вы можете просто добавить parameterless родительский конструктор:
protected Parent() { }
вам нужно изменить конструктор вашего ребенка:
public child(int i) : base(i) { // etc... }
вы получили ошибку, потому что конструктор родительского класса принимает параметр, но вы не передаешь параметр от ребенка к родителю.
конструкторы не наследуются в C#, вы должны связать их вручную.
вам нужно изменить конструктор
child
класс для этого:public child(int i) : base(i) { Console.WriteLine("child"); }
часть
: base(i)
означает, что конструктор базового класса с однимint
параметр должен быть использован. Если это отсутствует, вы неявно указывает компилятору использовать конструктор по умолчанию без параметров. Поскольку такой конструктор не существует в базовом классе, он дает вам эту ошибку.
компилятор не может угадать, что должно быть передано для аргумента базового конструктора. Вы должны сделать это явно:
public class child : parent { public child(int i) : base(i) { Console.WriteLine("child"); } }