本節書摘來自異步社群《.net程式員面試秘笈》一書中的第1章,面試題7,作者: 張雲翯, 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
.net程式員面試秘笈
【考點】各種形态構造函數的了解,派生類的構造函數,構造函數的重載。
【出現頻率】
構造函數用于建立類的執行個體,并對執行個體進行初始化操作,通過不同的參數傳遞,可進行不同的執行個體初始化操作。本例通過多種不同形式的構造函數建立執行個體,并輸出初始化的結果。在ch01目錄下建立一個程式檔案,并命名為constructor.cs,編寫代碼如程式1.8所示。

在指令行下編譯constructor.cs後,執行constructor程式,其效果如圖1.10所示。
前面的所有示例中都使用了構造函數,因為構造函數用于建立類的執行個體(對象)。在類中聲明構造函數可對新執行個體(對象)進行初始化的操作,其編寫方法如以下代碼所示:
可見,構造函數和類中的方法類似,也是一種函數,不過構造函數的名稱必須和類名稱相同。并且構造函數沒有傳回值,是以其函數簽名和一般的函數有差別。沒有參數的構造函數被稱為預設構造函數,如果非靜态類的類體中沒有聲明構造函數,類将自動提供一個預設構造函數,并将類成員初始化為預設值。
說明:
結構類型(struct)是值類型,不需要顯式聲明預設構造函數,編譯器将自動生成預設構造函數。當用new運算符執行個體化時預設構造函數才被調用,将成員初始化為預設值。
通過不同的參數傳遞,在類體中可聲明多個構造函數,即實作構造函數的重載。其編寫方法如以下代碼所示:
在程式中建立該類的執行個體(對象)時,通過傳遞參數的不同,調用不同的構造函數進行不同的初始化操作。程式中建立執行個體(對象)的方法如以下代碼所示:
一般情況下,構造函數是執行個體構造函數,即可通過該構造函數在類外部建立類的執行個體。反之,如果需要阻止建立類的執行個體,可在聲明私有的預設構造函數,這種情況一般用于無執行個體成員的類中。如果需要完成隻執行1次的操作,可以聲明靜态構造函數。這種構造函數在建立執行個體前或引用靜态成員前自動調用,一般用于對靜态成員的操作。
無執行個體成員的類可聲明為靜态類,即無須聲明私有的預設構造函數。
本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。