Effective C# Item13:使用靜態構造器初始化靜態類成員

來源:互聯網
上載者:User

    在建立類型的任何執行個體之前,我們需要初始化這個類型中的靜態成員變數,C#可以通過靜態初始化器或者靜態建構函式來完成這個任務,其中靜態構造器是一個特殊的函數,它會在一個類的任何方法、變零或者屬性被訪問之前執行。

    我們不應該使用類型的樣本建構函式或者類型中的某些非靜態方法來初始化類型的靜態成員變數。

    如果靜態成員初始化的過程不複雜,那麼我們可以在類型的初始化器中對其進行初始化;如果靜態成員初始化時,需要執行大量的邏輯操作,那麼我們可以將其初始化的過程提取到靜態建構函式中。

    我們可以使用靜態建構函式來實現設計模式中的單例模式,如以下代碼所示。

代碼

 1 public class MySingleton
2 {
3 private static readonly MySingleton _theOneAndOnly =
4 new MySingleton( );
5
6 public static MySingleton TheOnly
7 {
8 get
9 {
10 return _theOneAndOnly;
11 }
12 }
13
14 private MySingleton( )
15 {
16 }
17
18 // remainder elided
19  }

    和樣本初始化器類似,靜態初始化器會在靜態建構函式中的顯式代碼之前執行,同樣,靜態初始化器也會在基類的靜態建構函式之前執行。

 

    靜態初始化器和靜態建構函式為我們類型中的靜態成員提供了最清晰的初始化方式,使用這種方法,代碼既容易閱讀,也不易發生錯誤。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.