为什么StringBuilder的默认容量为16个字符?

时间:2011-12-15 14:00:57

标签: c# .net stringbuilder capacity

为什么StringBuilder的默认容量为16个字符?这是某种优化吗?

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

输出:

builder capacity: '16'

1 个答案:

答案 0 :(得分:4)

  

如果在初始化StringBuilder实例时未指定容量或最大容量,则使用特定于实现的默认值。

Straight from the MSDN docs.

它们无法真正优化任何内容,因为它完全取决于使用情况,因此它们允许您在构造函数中指定容量,因此您可以自己对其进行优化。如果你没有完全根据你想要一些容量的相当安全的猜测来指定任何东西,即使你没有指定任何东西,他们也会把东西放进去。

列表也是如此。他们不知道您想要的项目数量,或者您的应用程序中平均包含的项目数量。它们暴露容量,因此您可以强制列表大小,以防止它不得不经常增长。 StringBuilder在这种情况下没有什么不同。