我的代码是
public class Parent { public Parent(int i) { Console.WriteLine("parent"); } } public class Child : Parent { public Child(int i) { Console.WriteLine("child"); } }
我收到错误消息:
父级不包含采用0个参数的构造函数。
我知道问题是Parent没有0参数的构造函数。但是我的问题是,为什么我们需要一个零参数的构造函数?为什么没有它,代码不起作用?
Parent
由于您没有显式调用父构造函数作为子类构造函数的一部分,因此对无参数的父构造函数进行了隐式调用。该构造函数不存在,因此您会收到该错误。
要纠正这种情况,您需要添加一个显式调用:
public Child(int i) : base(i) { Console.WriteLine("child"); }
或者,您可以只添加一个无参数的父构造函数:
protected Parent() { }