StringBuilder:AppendFormat和Capacity

时间:2013-08-19 21:10:42

标签: c# .net

在此代码中,我尝试appendFormat一条长度大于字符串构建器容量的消息:

    static void Main(string[] args)
    {
        StringBuilder sb = new StringBuilder(10);
        sb.AppendFormat("1234567890123"); // 13 characters
        Console.WriteLine(sb.Capacity);
    }

你知道输出应该是什么(在底部回答)?

好的,让我们尝试更改此代码并使用容量初始化StringBuilder,但仍然小于字符串长度,例如12:

    static void Main(string[] args)
    {
        StringBuilder sb = new StringBuilder(12);
        sb.AppendFormat("1234567890123"); // 13 characters
        Console.WriteLine(sb.Capacity);
    }

所以,我的问题是:如果无法追加字符串,AppendFormat真的double StringBuilder的起始容量是否真的Capacity?如果附加的字符串长度应为24个字符,那么48将变为{{1}}?

输出代码: 20 &的 24

1 个答案:

答案 0 :(得分:3)

  

如果无法追加字符串,AppendFormat是否会使StringBuilder的启动容量加倍?

是 - see here

  

每当append操作导致StringBuilder对象的长度超过其容量时,其现有容量将加倍并且Append操作成功。