Effective C# 摘錄(2) – .NET資源管理

來源:互聯網
上載者:User

12:變數聲明時初始化優於指派陳述式。
   Prefer Variable Initializers to Assignment Statements。
   若類的執行個體變數成員在聲明時初始化,初始化代碼會內聯到該類的每個執行個體建構函式中:構造對象執行個體時,先執行初始化代碼,再調用基類建構函式,最後執行建構函式中代碼。
   當建構函式有多個重載版本時,建議在定義欄位時避免進行初始化,而應該將這些公用的初始化語句放在一個建構函式中,然後使其他的構造器顯示地調用這個初始化建構函式。  

13:使用靜態構造器初始化靜態類成員。
   Initialize Static Class Members with Static Constructors.
   若類中的靜態變數成員在聲明時初始化,初始化代碼會內聯到類的靜態建構函式中:運行時,先執行初始化代碼,再執行靜態建構函式中的代碼。建議:簡單靜態成員可以直接在聲明時初始化,而可能產生異常的初始化則應放在靜態建構函式中初始化。

14:利用構造器鏈。
   Utilize Constructor Chaining.
   只能使用this(args)(構造器鏈中的最後一個建構函式中調用Base))和base(args)中一個,不能同時使用。

15:利用using和try/finally語句來清理資源。
   Utilize using and Try/finally for Resource Cleanup.
   using所使用的對象必須繼承IDisposable,且不支援運行時類型檢查(可用as轉換,但可能會隱藏bug,一般確保每一個實現了IDispose介面的對象分配在在using範圍內)。

16:盡量減少記憶體垃圾。
   Minimize Garbage.
   使用類成員而代替每個函數中都用到的局部變數;使用Singleton模式來實現公用對象或將其實現為對象池。

17:盡量減少裝箱與拆箱。
   Minimize Boxing and Unboxing。
   防止隱式裝箱。eg:Console.WriteLine( "Number list:{0}, {1}, {2}",1,2,3 );=>Console.WriteLine( "Number list:{0}, {1}, {2}",1.ToString(),2.ToString(),3.ToString() );

18:實現標準Dispose模式。
   Implement the Standard Dispose Pattern.
   Dispose()應做的工作:釋放所有非託管資源;釋放所有託管資源,這包括取消事件綁定;設定標誌位,標明對象已經釋放;調用“GC.SuppressFinalize(this)”來避免GC再去掉用對象的解構函式。
   如果父類和子類都使用了非託管資源,則子類在重載父類的Dispose()函數中,要記得顯式調用父類的Dispose()。
    

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.