[英]What happens if you have :base() in the top class?
我很难理解如果将:base()放在顶级类中会发生什么。 代码像这样...
class A {
public A(): this(3) {
Console.Write("1");
}
public A(int x): base() {
Console.Write("{0}", x);
}
}
class B:A {
public B(): this(4) {
Console.Write("3");
}
public B(int x) {
Console.Write("{0}", x):
}
}
class C:B {
public C(int x): base() {
Console.Write("{0}", x):
}
public C(): this(7) {
Console.Write("6");
}
}
class Program {
public static void Main(string[] args) {
C c = new C();
}
我不明白为什么我们需要从头开始(A类)。 那么输出是什么?
默认情况下,所有类都继承自System.Object
类,因此,在顶级类A
添加base()
时,您在调用对象类的构造函数,则不会产生任何结果。
您的顶级类从System.Object
(C#别名object
)隐式继承。 因此,这基本上调用了object
的默认构造object
。 但是由于无论如何默认都会调用基类的默认构造函数,因此这不会改变任何内容。
所以
public A(int x)
: base()
{
}
和
public A(int x)
{
}
是等效的。
如果基类构造函数具有参数,则必须显式调用它以传递必需的参数。
请参阅: 使用构造函数(C#编程指南)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.