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

本文关键字:字符 容量 StringBuilder 默认 为什么 | 更新日期: 2023-09-27 18:17:53

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

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

输出:

builder capacity: '16'

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

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

直接来自 MSDN 文档。

它们

无法真正优化任何东西,因为它完全取决于使用情况,因此它们允许您在构造函数中指定容量,因此您可以自己优化它。如果您不纯粹根据公平安全的猜测来指定任何内容,即使您没有指定任何容量,他们也会添加一些内容

列表也是如此。他们不知道你想要多少项,也不知道一个列表在你的应用中平均包含多少项。它们公开容量,因此您可以将列表大小强制为可以防止其必须过于频繁地增长的内容。在这种情况下,StringBuilder没有什么不同。