記得以前的規則是“翻倍補余”。
當申請增加容量時,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);
結果為:
申請多少,就是多少。
規則發生變化了嗎?