繁体   English   中英

如果您在顶级类中有:base()会怎样?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM