摘要:泛型物件項目的重新配置
List 的 Capacity 代表集合的容量,Count 代表集合中的數量
隨著項目新增至 List 物件中,會重新配置內部陣列來增加容量。
重新配置的意義
當加入新項目至 List 物件中時會去檢查 List 物件的 Capacity 與 Count 屬性值
當 Count 等於 Capacity,會自動重新配置內部陣列,並將新陣列的容量設為 Capacity 的倍數,並且在加入新項目以前,複製現有項目至新陣列,接著再將新項目加入。
成本:
1.建立一個新的內部陣列
2.將現有項目複製到新的內部陣列中
當 List 物件中的項目多且項目資料量大時,重新配置的成本不小。
所以一般建議若項目數量是可預測的話,在建立 List<T> 物件時就設定 Capacity 大小。
當 List<T> 物件項目加入完成後可使用 TrimExcess() 方法,或設定 Capacity = Count 來最減少不必要的記憶體空間,不過這些舉動也會引發重新配置。
但使用TrimExcess() 方法時會去檢查項目大於容量的 90%,就不會執行重新配置,避免為取得一點利益而產生昂貴的重新配置成本。