再看靜態static及相關知識彙集

來源:互聯網
上載者:User

標籤:style   class   blog   code   http   tar   

  在C#程式中,沒有全域變數的概念,這意味著所有的成員變數只有該類的執行個體才能操作這些資料,這起到了“資訊隱藏”的作用。但有些時候,這樣做卻不是個明智的選擇。C#中靜態變數——它在類中類似全域變數,儲存類的公用資訊,所有該類(而非對象或執行個體)共用該值。

   靜態建構函式——static修飾的建構函式,靜態建構函式是C#的一個新特性,在編程過程中用處並不廣,它的主要目的是用於初始化一些靜態變數。因為這個建構函式是屬於類的,而不屬於任何一個執行個體,所以這個建構函式只會被執行一次,而且是在建立此類的第一個執行個體或引用任何靜態成員之前,由.NET自動調用。靜態經典應用——單例模式
      public class Singleton      {          private static Singleton instance;          private Singleton()          {          }          public static Singleton GetInstance()          {              if (instance == null)              {                  instance = new Singleton();              } return instance;          }      }

 

一 在使用靜態建構函式的時候應該注意以下幾點: 1、靜態建構函式既沒有存取修飾詞,也沒有參數。--因為是.NET調用的,所以像public和private等修飾符就沒有意義了。 2、在建立第一個類執行個體或任何靜態成員被引用時,.NET將自動調用靜態建構函式來初始化類。--也就是說我們無法直接調用靜態建構函式,也不可能知道靜態建構函式何時會被調用。 3、一個類只能有一個靜態建構函式。 4、無參數的建構函式可以與靜態建構函式共存。--儘管參數列表相同,但一個屬於類,一個屬於執行個體,所以不會衝突。 5、最多隻運行一次。 6、靜態建構函式不可以被繼承。 7、如果沒有寫靜態建構函式,而類中包含帶有初始值設定的靜態成員,那麼編譯器會自動產生預設的靜態建構函式。

二 C#中類的初始化順序:

1. 先變數後建構函式。

--變數先被初始化,然後建構函式被執行

2. 先靜態化後執行個體化。

--當一個類被訪問時,靜態變數和建構函式最先被初始化.接著是對象的執行個體化變數和建構函式被初始化

3. 衍生類別和基類初始化順序

   a. 對於變數和靜態建構函式先衍生類別後基類。

   --其派生對象在基底物件之前被初始化.比如C類派生自B類,B類派生自A類,那麼變數和靜態建構函式被初始化次序是C-B-A.

   b.對於執行個體建構函式則相反,先基類再衍生類別

   --基類建構函式在衍生類別建構函式之前執行,比如C類派生自B類,B類派生自A類,那麼執行個體建構函式被執行次序是A-B-C.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.