当我有一个容量为5的空StringBuilder
时,我写着“你好,世界!”。为此,C#标准是否指定了StringBuilder
的新容量?我有一个模糊的内存,它是新字符串长度的两倍(以避免更改每个新附加字符串的容量)。
最佳答案
取决于您所讨论的.NET版本。在.NET 4之前,StringBuilder使用standard .NET strategy,每次需要扩展内部缓冲区时,其容量都会加倍。
现在已经使用ropes完全为.NET 4重写了StringBuilder。现在可以通过添加最多8000个字符的另一条绳索来扩展分配。效率不及早期的策略,但可以避免大缓冲区阻塞大对象堆的麻烦。如果您想仔细看一看,可以从引用源获得源代码。
关于c# - StringBuilder的容量如何变化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7547827/