C#構(gòu)造函數(shù)介紹及分類淺析
C#構(gòu)造函數(shù)是一種特殊的成員函數(shù),它主要用于為對象分配存儲空間,對數(shù)據(jù)成員進(jìn)行初始化.
(1)C#構(gòu)造函數(shù)的名字必須與類同名;
(2)C#構(gòu)造函數(shù)沒有返回類型,它可以帶參數(shù),也可以不帶參數(shù);
(3)C#構(gòu)造函數(shù)的主要作用是完成對類的初始化工作;
(4)在創(chuàng)建一個類的新對象(使用new關(guān)鍵字)時,系統(tǒng)回自動調(diào)用給類的構(gòu)造函數(shù)初始化新對象;
C#的類有兩種構(gòu)造函數(shù):實(shí)例構(gòu)造函數(shù)和靜態(tài)構(gòu)造函數(shù)
C#構(gòu)造函數(shù)之實(shí)例構(gòu)造函數(shù):
負(fù)責(zé)初始化類中的實(shí)例變量,它只有在用戶用new關(guān)鍵字為對象分配內(nèi)存時才被調(diào)用,而且作為引用類型的類,其實(shí)例化后的對象必然時分配在托管堆(Managed Heap)上。實(shí)例構(gòu)造函數(shù)又分為默認(rèn)構(gòu)造函數(shù)和非默認(rèn)構(gòu)造函數(shù),注意一旦類有了自己的構(gòu)造函數(shù),無論是有參數(shù)還是沒有參數(shù),默認(rèn)構(gòu)造函數(shù)都將無效,而且僅僅聲名一個類而不實(shí)例化它,則不會調(diào)用構(gòu)造函數(shù)。
C#構(gòu)造函數(shù)之靜態(tài)構(gòu)造函數(shù):
(1)用于對靜態(tài)字段、只讀字段等的初始化;
(2)添加static關(guān)鍵字,不能添加訪問修飾符,因?yàn)殪o態(tài)構(gòu)造函數(shù)都是私有的;
(3)類的靜態(tài)構(gòu)造函數(shù)在給定應(yīng)用程序域中至多執(zhí)行一次,只有創(chuàng)建類的實(shí)例或者引用類的任何靜態(tài)成員才激發(fā),不能帶又參數(shù);
(4)靜態(tài)構(gòu)造函數(shù)是不可繼承的,而且不能被直接調(diào)用;
(5)如果類中包含用來開始執(zhí)行的 Main 方法,則該類的靜態(tài)構(gòu)造函數(shù)將在調(diào)用 Main 方法之前執(zhí)行.任何帶有初始值設(shè)定項(xiàng)的靜態(tài)字段,則在執(zhí)行該類的靜態(tài)構(gòu)造函數(shù)時,先要按照文本順序執(zhí)行那些初始值設(shè)定項(xiàng);
(6)如果沒有編寫靜態(tài)構(gòu)造函數(shù),而這時類中包含帶有初始值設(shè)定的靜態(tài)字段,那么編譯器會自動生成默認(rèn)的靜態(tài)構(gòu)造函數(shù);
一個類可以同時擁有實(shí)例構(gòu)造函數(shù)和靜態(tài)構(gòu)造函數(shù),這是惟一可以具有相同參數(shù)列表的同名方法共存的情況。
C#構(gòu)造函數(shù)的基本內(nèi)容就向你介紹到這里,希望對你學(xué)習(xí)和了解C#構(gòu)造函數(shù)有所幫助。
【編輯推薦】