您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“C#中怎么構(gòu)造函數(shù)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
C#構(gòu)造函數(shù)大體上分為靜態(tài)C#構(gòu)造函數(shù)和實例C#構(gòu)造函數(shù),實例C#構(gòu)造函數(shù)當然就是在實例化類的時候執(zhí)行,理解起來比較簡單,而靜態(tài)C#構(gòu)造函數(shù)有些特別:
靜態(tài)C#構(gòu)造函數(shù)只執(zhí)行一次,在C#中,靜態(tài)C#構(gòu)造函數(shù)一般在***次調(diào)用類的成員之前執(zhí)行.編寫類的靜態(tài)C#構(gòu)造函數(shù)的一個原因是,類有一些靜態(tài)字段或?qū)傩?需要在***次使用類之前,從外部源中初始化這些靜態(tài)字段或?qū)傩?.NET運行庫沒有確保靜態(tài)C#構(gòu)造函數(shù)什么時候執(zhí)行,但至多運行一次
靜態(tài)C#構(gòu)造函數(shù)不能帶任何參數(shù),沒有訪問修飾符,其他C#代碼從來不調(diào)用它 總是由C#運行庫調(diào)用,所以修飾符沒有任何意義,,一個類只能有一個靜態(tài)C#構(gòu)造函數(shù),靜態(tài)C#構(gòu)造函數(shù)只能訪問類的靜態(tài)成員,不能訪問實例成員
如果提供了帶參數(shù)的C#構(gòu)造函數(shù),編譯器不會自動提供默認的C#構(gòu)造函數(shù),只有在沒有定義任何C#構(gòu)造函數(shù)時,編譯器才會提供默認的C#構(gòu)造函數(shù)。
靜態(tài)C#構(gòu)造函數(shù)在加載類時執(zhí)行,而實例C#構(gòu)造函數(shù)在創(chuàng)建類的實例時執(zhí)行,所以可以在類中安全共存,即使參數(shù)列表相同
(2)從其他C#構(gòu)造函數(shù)中調(diào)用C#構(gòu)造函數(shù)
有時候在一個類中有幾個C#構(gòu)造函數(shù),以容納某些可選參數(shù),這些C#構(gòu)造函數(shù)包含了一些公同代碼,例:
class car ...{ private string description; private unit wheels; public Car(string model,unit nWheels) ...{ this.desciption=description; this.nWheels=nWheels; } public car(string model) ...{ this.description=description; this.nWheels=4; } }
上面類中的兩個C#構(gòu)造函數(shù)初始化了相同的字段,C#有一個特殊的語法把上面的所有代碼都方到一起,稱C#構(gòu)造函數(shù)初始化器可以實現(xiàn):
class car ...{ private string description; private unit wheels; public Car(string model,unit nWheels) ...{ this.desciption=description; this.nWheels=nWheels; } public car(string model) :this(model,4) ...{ } }
上面的this關(guān)鍵字僅僅調(diào)用參數(shù)最匹配的那個C#構(gòu)造函數(shù),這里要注意:構(gòu)造初始化器在C#構(gòu)造函數(shù)之前執(zhí)行?。?!
假定運行下面代碼:
Car myCar=new Car(\"Proton Persona\");
“C#中怎么構(gòu)造函數(shù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。