HOWTO · Csharp

在 C# 中從子類的建構函式呼叫基類的建構函式

base 關鍵字可用於從 C# 中的子類的建構函式呼叫基類的建構函式。

本頁內容

本教程將討論從 C# 中的子類的建構函式呼叫基類的建構函式的方法。

在 C# 中從子類的建構函式呼叫基類的預設建構函式

在 C# 中,當我們建立子類的例項時,編譯器會自動呼叫基類的預設建構函式。下面的程式碼示例中顯示了這種現象。

using System;

namespace call_constructor_of_base_class {
  public class baseClass {
    public baseClass() {
      Console.WriteLine("This is the Base Class");
    }
  }
  public class childclass : baseClass {
    public childclass() {
      Console.WriteLine("This is the Child Class");
    }
  }

  class Program {
    static void Main(string[] args) {
      childclass c = new childclass();
    }
  }
}

輸出:

This is the Base Class
This is the Child Class

在上面的程式碼中,baseClass 是基類,而 childclass 是繼承 baseClass 的子類。當我們建立子類 childclass 的例項時,編譯器會自動呼叫 baseClass 的預設建構函式。baseClass 的建構函式在 childclass 的建構函式之前執行。此方法不能用於將引數從子類的建構函式傳遞給基類的建構函式。

在 C# 中使用 base 關鍵字將引數從子類的建構函式傳遞給基類的建構函式

如果要從子類的建構函式將引數傳遞給基類的建構函式,則必須使用 base 關鍵字base 關鍵字指定在建立子類的例項時應呼叫基類的構造方法。以下程式碼示例向我們展示瞭如何使用 C# 中的 base 關鍵字將子類的建構函式中的引數傳遞給基類的建構函式。

using System;

namespace call_constructor_of_base_class {
  public class baseClass {
    public baseClass() {
      Console.WriteLine("This is the Base Class");
    }
    public baseClass(int x) {
      Console.WriteLine("The Child class passed {0} to the Base Class", x);
    }
  }
  public class childclass : baseClass {
    public childclass(int a) : base(a) {
      Console.WriteLine("This is the Child Class");
    }
  }

  class Program {
    static void Main(string[] args) {
      childclass c = new childclass(10);
    }
  }
}

輸出:

The Child class passed 10 to the Base Class
This is the Child Class

在上面的程式碼中,我們將 10 傳遞給子類 childclass 的建構函式的基類 baseClass 的引數化建構函式。