C#错误:父不包含一个构造函数,它需要0个参数
我的代码是
public class Parent { public Parent(int i) { Console.WriteLine("parent"); } } public class Child : Parent { public Child(int i) { Console.WriteLine("child"); } } 我收到错误:
父母不包含带有0个参数的构造函数。
 我明白问题是, Parent没有0参数的构造函数。 但我的问题是,为什么我们需要一个零参数的构造函数? 为什么没有它的代码工作? 
由于您没有显式调用父构造函数作为子类构造函数的一部分,因此存在对插入的无参数父构造函数的隐式调用。 该构造函数不存在,所以你得到这个错误。
要纠正这种情况,您需要添加一个明确的调用:
 public Child(int i) : base(i) { Console.WriteLine("child"); } 
或者,你可以添加一个无参数的父构造函数:
 protected Parent() { } 
你需要改变你的孩子的构造函数为:
 public child(int i) : base(i) { // etc... } 
你得到的错误,因为你的父类的构造函数接受一个参数,但你没有将该参数从孩子传递给父母。
构造函数不是用C#inheritance的,你必须手动链接它们。
 您需要将child类的构造函数更改为: 
 public child(int i) : base(i) { Console.WriteLine("child"); } 
 部分: base(i)意味着应该使用带有一个int参数的基类的构造函数。 如果缺less,则隐含地告诉编译器使用不带参数的默认构造函数。 因为在基类中不存在这样的构造函数,所以它会给你这个错误。 
编译器无法猜测应该为基础构造函数parameter passing什么。 你必须明确地做到这一点:
 public class child : parent { public child(int i) : base(i) { Console.WriteLine("child"); } } 
您可以在父类中使用不带参数的构造函数:
 public parent() { } 
编译器默认尝试调用基类的无参数构造函数。
如果基类没有无参数构造函数,则必须自己明确地调用它:
 public child(int i) : base(i){ Console.WriteLine("child");} 
参考: 构造函数在inheritance期间调用层次结构