C# 類的建構函式 解析
阿新 • • 發佈:2020-12-21
建構函式
建構函式是一種方法,其名稱與其型別的名稱相同。 其方法簽名僅包含方法名稱和其引數列表;它不包含返回型別。
建構函式的定義規則:
(1)C# 語言的建構函式的名稱必須與類名相同。
(2)建構函式沒有返回值。它可以帶引數,也可以不帶引數。
(3)宣告類物件時,系統自動呼叫建構函式。在建構函式中不要做對類的例項進行初始化以外的事情,也不能被顯式地呼叫。
(4)建構函式可以過載,從而提供初始化類物件的不同方法;
(5)若在宣告時未定義建構函式,系統會自動生成預設的建構函式,此時建構函式的函式體為空。
(6)靜態建構函式,用static修飾,用於初始化靜態變數,一個類只允許有一個建構函式,在類例項化時載入,這時修飾符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