为什么 StringBuilder 的默认容量为 16 个字符?这是某种优化吗?
StringBuilder builder = new StringBuilder();
Console.WriteLine("builder capacity: '{0}'", builder.Capacity);
输出:
builder capacity: '16'
为什么 StringBuilder 的默认容量为 16 个字符?这是某种优化吗?
StringBuilder builder = new StringBuilder();
Console.WriteLine("builder capacity: '{0}'", builder.Capacity);
输出:
builder capacity: '16'
如果在初始化 StringBuilder 的实例时未指定容量或最大容量,则使用特定于实现的默认值。
它们无法真正优化任何东西,因为它完全取决于使用情况,因此它们允许您在构造函数中指定容量,因此您可以自己优化它。如果您没有指定任何内容,他们就会放入一些东西,纯粹是基于相当安全的猜测,即使您没有指定任何容量,您也需要一些容量。
列表也是如此。他们不知道您想要多少项目或列表中平均包含多少项目在您的应用程序中。它们公开了容量,因此您可以将列表大小强制为可以防止它不得不经常增长的东西。在这种StringBuilder
情况下没有什么不同。