建構函式 (C# 程式設計手冊)

每當建立類別結構時,都會呼叫其建構函式。 類別或結構可有使用不同引數的多個建構函式。 建構函式能讓程式設計師可以設定預設值、限制具現化,以及撰寫彈性且容易閱讀的程式碼。 如需詳細資訊和範例,請參閱使用建構函式執行個體建構函式

無參數建構函式

如果您未提供類別的函式,c # 會根據預設建立一個函式,以具現化物件,並將成員變數設定為預設值,如 c # 類型的預設值 一文所列。 如果您未提供結構的函式,c # 會依賴 隱含無參數 的函式,將每個欄位自動初始化為其預設值。 如需詳細資訊和範例,請參閱 實例的函式。

建構函式語法

建構函式是名稱與其類型名稱相同的方法。 其方法簽章只包含方法名稱及其參數清單,不包含傳回的類型。 下例示範名為 Person 的類別建構函式。

public class Person
{
   private string last;
   private string first;

   public Person(string lastName, string firstName)
   {
      last = lastName;
      first = firstName;
   }

   // Remaining implementation of Person class.
}

如果建構函式可以實作為單一陳述式,您就可以使用運算式主體定義。 下列範例定義 Location 類別,這個類別的建構函式包含名為 name 的單一字串參數。 運算式主體定義會將引數指派給 locationName 欄位。

public class Location
{
   private string locationName;

   public Location(string name) => Name = name;

   public string Name
   {
      get => locationName;
      set => locationName = value;
   }
}

靜態建構函式

前例都已顯示建立新物件的執行個體建構函式。 類別或結構也可以有靜態建構函式,用來初始化類型的靜態成員。 靜態建構函式無參數。 如果您未提供靜態的函式來初始化靜態欄位,c # 編譯器會將靜態欄位初始化為其預設值,如 c # 類型的預設值一 文所列。

下列範例會使用靜態建構函式來初始化靜態欄位。

public class Adult : Person
{
   private static int minimumAge;

   public Adult(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Adult()
   {
      minimumAge = 18;
   }

   // Remaining implementation of Adult class.
}

您也可以使用運算式主體定義來定義靜態建構函式,如下例所示。

public class Child : Person
{
   private static int maximumAge;

   public Child(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Child() => maximumAge = 18;

   // Remaining implementation of Child class.
}

如需詳細資訊及範例,請參閱靜態建構函式

本節內容

使用建構函式

執行個體建構函式

私用建構函式

靜態建構函式

如何撰寫複製建構函式

另請參閱