2012-09-08 32 views
0

List's通常適用於添加和移除項目的原因之一是內部數據表示的分配量大於需要減少重新分配的次數。在C#中只有內部表示增長的列表集合?

有沒有辦法讓這個類(或其他類似的類)的實例根據需要增長一個體面的塊大小,但爲了防止減少內部數組的大小?

+2

會執行'IList'和設計你想要的行爲矯枉過正? – psubsee2003

+1

這可能是一個矯枉過正的情況,不是因爲這是一些額外的代碼,而是因爲List實現是高效的(本機代碼),這可能很難實現。 – kubal5003

回答

3

我不知道內部陣列的大小會自動減小(您可以使用TrimExcess手動減少它)。每當空間不足時,內存數組的大小總是會增加一倍。如果你不喜歡內置策略,你可以編寫一個包裝類來增加Capacity

+0

太棒了!所以我猜標準實現已經實現了我所追求的。我正在使用Mono運行時,但我懷疑列表實現將以相同的方式工作。 –

+1

是的,在Mono中基本相同:https://github.com/mono/mono/blob/master/mcs/class/corlib/System.Collections.Generic/List.cs#L100 –