1. 程式人生 > 其它 >C# 類的建構函式 解析

C# 類的建構函式 解析

技術標籤:C#教程c#

建構函式
建構函式是一種方法,其名稱與其型別的名稱相同。 其方法簽名僅包含方法名稱和其引數列表;它不包含返回型別。

建構函式的定義規則:
(1)C# 語言的建構函式的名稱必須與類名相同。
(2)建構函式沒有返回值。它可以帶引數,也可以不帶引數。
(3)宣告類物件時,系統自動呼叫建構函式。在建構函式中不要做對類的例項進行初始化以外的事情,也不能被顯式地呼叫。
(4)建構函式可以過載,從而提供初始化類物件的不同方法;
(5)若在宣告時未定義建構函式,系統會自動生成預設的建構函式,此時建構函式的函式體為空。
(6)靜態建構函式,用static修飾,用於初始化靜態變數,一個類只允許有一個建構函式,在類例項化時載入,這時修飾符public、private失去作用。

(7)建構函式可以使用public、protected、private修飾符。一般地,建構函式總是public 型別的。private 型別的建構函式表明類不能被例項化,通常用於只含有靜態成員的類。
(8)引用父類構造時用():base()方法,引用自身過載的構造使用():this(int para)。
(9)一個建構函式的返回型別是這個類的一個例項,而一個普通方法的返回型別可以是任何型別。

舉個小例子,幫助理解

 1     //父類
 2     public class Person
 3     {
 4         private string last;
 5         private
string first; 6 7 //父類的建構函式 8 public Person(string lastName, string firstName) 9 { 10 last = lastName; 11 first = firstName; 12 System.Console.WriteLine("父類帶引數建構函式"); 13 } 14 } 15 16 //子類 17 public class Adult
: Person 18 { 19 //帶引數的建構函式 20 public Adult(string firstName, string lastName): base(lastName, firstName) 21 { 22 System.Console.WriteLine("子類帶引數建構函式"); 23 } 24 25 //靜態建構函式 (靜態建構函式必須無引數,也不允許有訪問修飾符) 26 static Adult() 27 { 28 System.Console.WriteLine("子類靜態建構函式"); 29 } 30 }

呼叫:

在這裡插入圖片描述

呼叫順序如下圖:
在這裡插入圖片描述

如果基類沒有提供無引數建構函式,派生類必須使用 base 顯式呼叫基類建構函式。

在訪問任何靜態欄位之前,都將自動呼叫靜態建構函式,它們通常用於初始化靜態類成員。

在訪問一個類的時候,系統將首先執行建構函式中的語句。建構函式的功能是建立物件,使物件的狀態合法化。在從建構函式返回之前,物件都是不確定的,不能用於執行任何操作;只有在建構函式執行完成之後,存放物件的記憶體塊中才存放這一個類的例項。

部分內容摘錄:https://www.cnblogs.com/tanding/archive/2012/06/26/2563501.html