程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Effective C#原則12:選擇變量初始化而不是賦值語句(2)

Effective C#原則12:選擇變量初始化而不是賦值語句(2)

編輯:關於C語言
你創建一個新的MyClass對象時,特別指定集合的大小,你 創建了兩個數組列表。其中一個很快成為垃圾對象。初始化器在所有的構造函數 之前會執行,構造函數會創建第2個數組列表。編譯器產生了這個的一個版本, 當然這是你決不會手動寫出來的。(參見原則14來使用一個恰當的方法來解決這 個問題)

public class MyClass
{
 // declare the collection, and initialize it.
 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