Visual Studio 2010中,StringBuilder.EnsureCapacity()规则变了吗?


记得以前的规则是“翻倍补余”。

  当申请增加容量时,EnsureCapacity()函数不管三七二十一,先将字符串容量加倍,如果加倍后的容量大于申请容量,则加倍后的容量即为新容量;如果加倍后的容量仍小于申请容量,则申请容量为新容量。

  以前:

StringBuilder buffer = new StringBuilder("Hello Kitty!"); //容量为16 
buffer.EnsureCapacity(28);                //请求把容量增加到28 
Console.WriteLine("Length = {0}", buffer.Length); 
Console.WriteLine("Capacity = {0}", buffer.Capacity); 

  结果为:

  现在,现在同样的程序,

StringBuilder buffer = new StringBuilder("Hello Kitty!"); //容量为16 
buffer.EnsureCapacity(28);                //请求把容量增加到28 
Console.WriteLine("Length = {0}", buffer.Length); 
Console.WriteLine("Capacity = {0}", buffer.Capacity); 

  结果为:

  申请多少,就是多少。

  规则发生变化了吗?


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3