簡體   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