構造函數

構造函數是一種特殊的成員函數,它主要用於爲對象分配存儲空間,對數據成員進行初始化.
(1)構造函數的名字必須與類同名;
(2)構造函數沒有返回類型,它可以帶參數,也可以不帶參數;
(3)構造函數的主要作用是完成對類的初始化工作;
(4)在創建一個類的新對象(使用new關鍵字)時,系統回自動調用給類的構造函數初始化新對象;
(5)當創建派生類的對象時,系統將會調用基類的構造函數和派生類的構造函數,構 造函數的執行次序是:先執行基類的構造函數,再執行派生類的構造函數。如果派生類又有對象成員,則,先執行基類的構造函數,再執行成員對象類的構造函數,最後執行派生類的構造函數。
C#的類有兩種構造函數:實例構造函數和靜態構造函數
     實例構造函數:負責初始化類中的實例變量,它只有在用戶用new關鍵字爲對象分配內存時才被調用,而且作爲引用類型的類,其實例化後的對象必然時分配在託管堆(Managed Heap)上。實例構造函數又分爲默認構造函數和非默認構造函數,注意一旦類有了自己的構造函數,無論是有參數還是沒有參數,默認構造函數都將無效,而且僅僅聲名一個類而不實例化它,則不會調用構造函數。
   
 靜態構造函數:
   (1)用於對靜態字段、只讀字段等的初始化;       
   (2)添加static關鍵字,不能添加訪問修飾符,因爲靜態構造函數都是私有的;    
   (3)類的靜態構造函數在給定應用程序域中至多執行一次,只有創建類的實例或者引用類的任何靜態成員才激發,不能帶又參數;

  (4)靜態構造函數是不可繼承的,而且不能被直接調用;      
  (5)如果類中包含用來開始執行的 Main 方法,則該類的靜態構造函數將在調用 Main 方法之前執行.任何帶有初始值設定項的靜態字段,則在執行該類的靜態構造函數時,先要按照文本順序執行那些初始值設定項;  
  (6)如果沒有編寫靜態構造函數,而這時類中包含帶有初始值設定的靜態字段,那麼編譯器會自動生成默認的靜態構造函數;
    一個類可以同時擁有實例構造函數和靜態構造函數,這是惟一可以具有相同參數列表的同名方法共存的情況。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章