首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 12:優先使用欄位初始化器而非指派陳述式(二)

     編輯:關於C語言

建構函式中重複初始化的問題

建立 MyClass 物件並指定集合大小時,會建立兩個 ArrayList,其中一個瞬間成為垃圾。初始化器在所有建構函式之前執行,建構函式再建立第二個清單。編譯器產生的程式碼如下(你絕不會手寫):

public class MyClass
{
    private ArrayList _coll;
    MyClass() { _coll = new ArrayList(); }
    MyClass(int size) { _coll = new ArrayList(); _coll = new ArrayList(size); }
}

例外處理考量

將初始化放入建構函式的另一理由:促成例外捕捉。初始化器無法使用 try 區塊,建構時因成員變數產生的例外可能傳播出物件外部,你無法在類別內捕捉。應將初始化程式碼移入建構函式,以便捕捉例外並確保程式碼友善(原則 45)。

欄位初始化器的優勢

欄位初始化器是在忽略建構函式時確保成員變數正確初始化的最簡單方法。初始化器在所有建構函式前執行。使用此語法意謂日後新增建構函式時,不會忘記加入適當初始化。當建構函式與初始化產生相同成員物件時,請使用初始化器:程式碼易讀且易維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved