C#靜態(tài)類和靜態(tài)類成員

文檔:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members#example

一. 靜態(tài)類

特點(diǎn):

  • 只包含靜態(tài)成員。
  • 無法進(jìn)行實(shí)例化。
  • 會(huì)進(jìn)行密封。
  • 不能包含實(shí)例構(gòu)造函數(shù)。

注意:

  • 程序中首次引用類之前初始化其字段并調(diào)用其靜態(tài)構(gòu)造函數(shù)。 靜態(tài)構(gòu)造函數(shù)只調(diào)用一次,在程序所駐留的應(yīng)用程序域的生存期內(nèi),靜態(tài)類會(huì)保留在內(nèi)存中。
  • 使用靜態(tài)類的優(yōu)點(diǎn)是編譯器可以進(jìn)行檢查,以確保不會(huì)意外地添加任何實(shí)例成員。 編譯器可保證無法創(chuàng)建此類的實(shí)例。

二. 靜態(tài)方法

  • 靜態(tài)方法和屬性無法在其包含類型中訪問非靜態(tài)字段和事件
  • 它們無法訪問任何對(duì)象的實(shí)例變量,除非在方法參數(shù)中顯式傳遞它。
  • 在首次訪問靜態(tài)成員之前以及在調(diào)用構(gòu)造函數(shù)(如果有)之前,會(huì)初始化靜態(tài)成員。
  • 對(duì)靜態(tài)方法的調(diào)用會(huì)采用 Microsoft 中間語言 (MSIL) 生成調(diào)用指令,而對(duì)實(shí)例方法的調(diào)用會(huì)生成 callvirt 指令,該指令還會(huì)檢查是否存在 null 對(duì)象引用。 但是在大多數(shù)時(shí)候,兩者之間的性能差異并不顯著。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。