Site icon Build School Blog

C#學習筆記-物件與類別(4):靜態類別與靜態成員

blue retractable pen

Photo by Lukas on Pexels.com

靜態成員與執行個體成員最大的差異是存取路徑不同,當呼叫執行個體成員時,需要透過執行個體變數名稱存取;呼叫靜態成員時,則透過類別名稱(型別物件)來存取靜態成員。

靜態類別

class關鍵字前加入static即為靜態類別。
靜態類別具有以下幾點特性:

在 .NET 類別庫中,靜態 System.Math 類別包含執行數學運算的方法,而不需要儲存或擷取特定類別實例 Math 特有的資料。

程式無法指定確實載入靜態類別的時間。 不過一定會載入類別、初始化其欄位,並在第一次於程式中參考類別之前呼叫其靜態建構函式(只會呼叫靜態建構函式一次),而且靜態類別在程式所在應用程式定義域的存留期間保留在記憶體中。

靜態類別成員

非靜態類別可以包含靜態方法、欄位、屬性或事件。 即使尚未建立類別的執行個體(還沒new之前),還是可以在類別上呼叫靜態成員。

非靜態類別可以有靜態成員,靜態成員一律透過類別名稱進行存取,而不是執行個體名稱。不論建立了多少個執行個體,都只會有一個靜態成員複本(會在執行個體間共用)。

在類別成員回傳型別之前加入static關鍵字就是宣告為「靜態成員」

第一次存取靜態成員之前,以及呼叫靜態建構函式 (如果有的話) 之前,都會初始化靜態成員。 若要存取靜態類別成員,使用類別的名稱來指定成員的位置。

如果類別包含靜態欄位時,則需靜態建構函式,讓類別載入時初始化欄位。

小結

參考資料

本文同步發布在:C#學習筆記 — 物件與類別(4):靜態類別與靜態類別成員
若對內容有任何疑問或內容有錯誤,歡迎來信: andyhuang@build-school.com
Andy Huang

PM / Software Engineer / Student Coach @Build School

Exit mobile version