Уменьшение емкости списка требует нового резервного массива и копирования данных, так что это относительно дорогая операция.
В вашем конкретном случае я бы сказал, что оно того не стоит, если вы не начнете использовать памятьпроблемы.
Одна стратегия, которая может быть использована, если она станет реальной проблемой, - это создать «кусочную» реализацию IList<>
, которая использует не один массив, а несколько, каждый предварительно настроенного размера, с дополнительнымикуски (массивы фиксированного размера) добавляются по мере заполнения предыдущего.Это также позволяет сократить список относительно недорого, выпуская неиспользуемые чанки при удалении элементов, в то же время сводя к минимуму накладные расходы памяти только на один неполный чанк (последний).* все операций над списком, так как список должен рассчитать, какой чанк находится в элементе, и создать новые чанки по мере необходимости.Так что это бесполезно, если у вас действительно нет проблем с памятью и список, который действительно со временем меняет размер.