0

在此代码中,我尝试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真的不能追加 if 字符串double的起始容量吗?StringBuilder如果附加字符串的长度应为 24 个字符,Capacity则将变为48?

输出代码:20 & 24

4

1 回答 1

3

如果无法附加字符串,AppendFormat 是否真的会使 StringBuilder 的起始容量翻倍?

是的——见这里

每当追加操作导致 StringBuilder 对象的长度超过其容量时,其现有容量就会增加一倍,并且追加操作成功。

于 2013-08-19T21:13:39.133 回答