建構式
建構式是一種方法,其名稱與其型別的名稱相同, 其方法簽名僅包含方法名稱和其引數串列;它不包含回傳型別,
建構式的定義規則:
(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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/71348.html
標籤:C#
下一篇:C# 訪問修飾符
