天天看點

《.NET程式員面試秘笈》----面試題6 請簡述靜态類和靜态類成員

本節書摘來自異步社群《.net程式員面試秘笈》一書中的第1章,面試題6,作者: 張雲翯, 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

.net程式員面試秘笈

【考點】靜态類和靜态類成員的了解,static在應用中的特殊性。

【出現頻率】

在ch01目錄下建立一個程式檔案,并命名為static.cs,編寫代碼如程式1.7所示。

《.NET程式員面試秘笈》----面試題6 請簡述靜态類和靜态類成員
《.NET程式員面試秘笈》----面試題6 請簡述靜态類和靜态類成員

在指令行下編譯static.cs後,執行static程式,其效果如圖1.9所示。

《.NET程式員面試秘笈》----面試題6 請簡述靜态類和靜态類成員

本例的main方法中,首先将使用者第1次輸入的值通過逗号分隔為2個字元串,再分别指派給pc類的靜态字段,即cpu和memory;然後将使用者的第2次輸入也分隔為2個字元串,并轉換為整數類型指派給p和n。通過傳遞參數p和n給pc的構造函數建立了pc類的對象ibm,并進行了初始化。在使用者輸入值後的第1行通路了pc類的2個靜态字段,并通過執行個體方法計算了總價。在第2行直接調用了靜态類cpumsg的靜态方法getmsg(),靜态類cpumsg完全不需要執行個體化,可以很友善地直接在程式中使用。在.net的類庫中有很多類似的靜态類,可以在程式中直接使用其方法,例如math類。

static是比較特殊的修飾符,它所修飾的類或類成員被稱為靜态類或靜态類成員。

當類中某些成員不需要建立執行個體實作,則可将其聲明為靜态類成員。靜态成員在通路時直接引用類名而非對象名,同樣,“this”關鍵字也無法通路靜态成員。這些成員可用作該類的多個對象共享的資料,因為靜态類成員不依賴某個對象。聲明靜态類成員如以下代碼所示:

當類中沒有和對象執行個體相關的成員時,即類體中隻有靜态成員,可聲明該類為靜态類。靜态類無法用new建立對象,是以并不能編寫構造函數,并且該類是密封類(即無法被繼承)。靜态類的聲明方法如以下代碼所示:

通路修飾符 static class 類名稱

必須注意的是,類中的常數聲明和類型聲明預設為靜态,如類體中聲明1個類,這個類預設為static,即無法被所屬類的對象通路。

注意:

聲明靜态類時,必須保證其内含成員全部為靜态成員。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀