【问题标题】:Clearing a StringBuilder Object's Current String [duplicate]清除 StringBuilder 对象的当前字符串 [重复]
【发布时间】:2010-12-27 12:02:03
【问题描述】:

可能重复:
best way to clear contents of .NET’s StringBuilder

有没有一种快速简便的方法来摆脱 StringBuilder 当前持有的内容?

我一直在寻找 Clear() 方法,但找不到。 ;)

我愿意做

stringBuilderObject = ""

或类似的东西。

【问题讨论】:

  • @您在 JayZengs 中的评论回答:我认为 Length = 0,它可能会重新使用之前分配给它的内存,所以应该没有问题。要检查这一点,请尝试使用 Length = 0,然后检查容量,它应该与将长度设置为零之前的容量相同,如果您要创建许多类似大小的字符串,这是一件好事。

标签: c# stringbuilder


【解决方案1】:
stringBuilderObject.Remove(0,stringBuilderObject.Length)

【讨论】:

    【解决方案2】:

    这样就可以了

    stringBuilderObject.Length = 0;
    

    【讨论】:

    • 不知道。干得好。
    • 哦,我从来没有意识到 Length 有一个二传手。不错。
    【解决方案3】:
    stringBuilderObject.Remove(0, stringBuilderObject.Length)
    

    【讨论】:

    • 这是我最终的结果,但我可能会选择 Length = 0。虽然这看起来可能有内存问题?
    • @bobber205: From msdn.microsoft.com/en-us/library/…: "当前方法从当前实例中移除指定范围的字符。[...] 并且当前实例的字符串值被长度缩短。当前实例的容量不受影响。”因此,在 StringBuilder.Length = 0; 上选择此方法不会影响您的内存问题。如果担心内存问题,还需要设置 StringBuilder.Capacity = some_small_number。
    【解决方案4】:

    应该这样做;)

    myStringBuilder = new StringBuilder();
    

    【讨论】:

    • 不得不重新分配一个字符串构建器对象可能与尝试使用普通字符串性能一样糟糕,这取决于它的使用方式以及它被清除的原因。
    【解决方案5】:
    stringBuilderObject = new StringBuilder();  // Let the GC do its job
    

    【讨论】:

    • 不得不重新分配一个字符串构建器对象可能与尝试使用普通字符串性能一样糟糕,这取决于它的使用方式以及它被清除的原因。
    • 这也是我的第一个想法。但是对于将 StringBuilder 作为参数传递给方法的情况(尽管可能不常见)呢?您的版本无法解决问题,而 stringBuilder.Remove(0, stringBuilder.Length) 始终有效。
    猜你喜欢
    • 1970-01-01
    • 2014-02-19
    • 2019-03-09
    • 2016-07-13
    • 2012-07-22
    • 2019-05-21
    • 2011-07-08
    • 2014-03-01
    • 2015-12-23
    相关资源
    最近更新 更多