[.NET]泛型物件項目的重新配置

  • 2576
  • 0
  • C#
  • 2009-06-14

摘要:泛型物件項目的重新配置

List 的 Capacity 代表集合的容量,Count 代表集合中的數量

隨著項目新增至 List 物件中,會重新配置內部陣列來增加容量。

重新配置的意義
     當加入新項目至 List 物件中時會去檢查 List 物件的 Capacity 與 Count 屬性值
     當 Count 等於 Capacity,會自動重新配置內部陣列,並將新陣列的容量設為 Capacity 的倍數,並且在加入新項目以前,複製現有項目至新陣列,接著再將新項目加入。
 
 成本:
      1.建立一個新的內部陣列
      2.將現有項目複製到新的內部陣列中
 
     當 List 物件中的項目多且項目資料量大時,重新配置的成本不小。

所以一般建議若項目數量是可預測的話,在建立 List<T> 物件時就設定 Capacity 大小。

   當 List<T> 物件項目加入完成後可使用 TrimExcess() 方法,或設定 Capacity  = Count 來最減少不必要的記憶體空間,不過這些舉動也會引發重新配置。
   但使用TrimExcess() 方法時會去檢查項目大於容量的 90%,就不會執行重新配置,避免為取得一點利益而產生昂貴的重新配置成本。