В .NET есть конструктор для Dictionary<TKey, TValue>
, который принимает один параметр, int capacity
. Это то же самое, что и во многих других коллекциях, таких как List<T>
, Queue<T>
и Stack<T>
; кроме того, согласно документации MSDN :
Емкость словаря - это количество элементов, которые можно добавить в словарь, прежде чем потребуется изменение размера. Когда элементы добавляются в словарь, емкость автоматически увеличивается по мере необходимости путем перераспределения внутреннего массива.
Для меня это звучит почти так же, как и для других коллекций, таких как List<T>
и т. Д. Поскольку эти коллекции имеют функцию автоматического изменения размера при необходимости и, следовательно, имеют большую емкость, чем требуется, большинство из них имеют TrimExcess
метод. Это удобно, если, скажем, вы добавляете неизвестное количество элементов в коллекцию за один раз, и после этого вы не будете добавлять никаких дополнительных элементов.
Почему Dictionary<TKey, TValue>
не имеет такой же TrimExcess
метод?
(Отказ от ответственности: я хорошо знаком с ответом «функции не существуют по умолчанию»; я думаю, что я в основном просто задаюсь вопросом, есть ли конкретная причина, по которой TrimExcess
для Dictionary
не имеет смысла, или почему это будет значительно сложнее реализовать, чем для более простых коллекций, таких как List
.)