Почему StringBuilder имеет емкость по умолчанию 16 символов? - PullRequest
2 голосов
/ 15 декабря 2011

Почему StringBuilder имеет емкость по умолчанию 16 символов?Это какая-то оптимизация?

StringBuilder builder = new StringBuilder();
Console.WriteLine("builder capacity: '{0}'", builder.Capacity);

вывод:

builder capacity: '16'

1 Ответ

4 голосов
/ 15 декабря 2011

Используемые для реализации значения по умолчанию используются, если не указана емкость или максимальная емкость при инициализации экземпляра StringBuilder.

Прямо из документов MSDN.

Они не могут ничего оптимизировать, поскольку это полностью зависит от использования, поэтому они позволяют вам указать емкость в конструкторе, так что вы можете оптимизировать ее самостоятельно.Они вставляют что-то, если вы не указываете что-либо чисто на основании достаточно безопасного предположения, что вам нужна некоторая емкость, даже если вы не указываете ничего.

То же самое относится и к спискам.Они не знают, сколько элементов вы хотите или сколько элементов в среднем содержится в вашем приложении.Они раскрывают емкость, поэтому вы можете принудительно увеличить размер списка, чтобы он не увеличивался слишком часто.StringBuilder в этом случае не отличается.

...