【问题标题】:string builder vs string [duplicate]字符串生成器与字符串 [重复]
【发布时间】:2010-09-25 20:06:30
【问题描述】:

可能的重复:
When to use StringBuilder?
string is immutable and stringbuilder is mutable

字符串和字符串生成器有什么不同? 我们在哪里使用字符串生成器?

【问题讨论】:

    标签: .net stringbuilder


    【解决方案1】:

    主要区别在于 StringBuilder 是可变的(意味着可以修改),而字符串是不可变的(意味着一旦构建就不能修改)。

    这种区别很重要,例如,如果您尝试从许多较小的字符串创建一个大字符串。如果您使用 StringBuilder ,则在不创建新对象的情况下附加字符串,从而提供 O(n) 性能。如果你使用字符串,你会创建很多中间字符串,这些字符串会立即被丢弃,但是所有额外的复制意味着它变成了一个 O(n2) 操作。

    示例代码显示了每个字符串的用法,用于从许多较小的字符串构造一个大字符串:

    字符串

    string s = "";
    for (int i = 0; i < 10000; ++i)
    {
        s += "foo";
    }
    

    StringBuilder

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 10000; ++i)
    {
        sb.Append("foo");
    }
    string s = sb.ToString();
    

    【讨论】:

      【解决方案2】:

      除了字符串是不可变的和字符串构建器是可变的之外,当您要进行大量字符串连接时,您应该使用字符串构建器,因为这是一项非常昂贵的操作,尤其是包含在循环中时。

      【讨论】:

        猜你喜欢
        • 2013-08-29
        • 1970-01-01
        • 2021-06-20
        • 2010-09-12
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多