更改字符串构建器对象中的整个字符串

Changing the entire string in a string builder object

我有以下代码:

using System;
using System.Text;

public class Program
{
    private static StringBuilder mystrb = new StringBuilder("hello");
    public static void Main()
    {
        mystrb.Clear();
        mystrb.Append("chau");
    }
}

是否有任何其他方法可以完全替换字符串生成器中的字符串,如果存在的话,我正在寻找一种用一句话来完成的方法。

重新构建StringBuilder有什么问题?旧的只会被垃圾收集。

mystrb = new StringBuilder("chau");

最好的选择是根本不使用默认值进行实例化。由于您要立即将其替换为其他内容,因此只需将其留空 (new StringBuilder()) 或 null.

private static StringBuilder mystrb;

如果您过度简化了示例代码,那么只需创建一个新实例即可:

mystrb = new StringBuilder("chau");

我认为 Ian 的解决方案是用一个新对象简单地覆盖您的对象是最好的解决方案,但是如果出于某种原因您不喜欢那样,那么您可以这样做:

static void StringBuilderReplaceText(StringBuilder sb, string newText)
{
    sb.Clear();
    sb.AppendLine(newText);
}

我最初打算简单地继承 StringBuilder 对象并添加一个新的 Replace 扩展方法,但显然由于某种原因该对象是 sealed

所以是的,从技术上讲,这将允许您稍后使用 StringBuilderReplaceText(myStringBuilder, "my new text");StringBuilder 的内容替换为一行,但我真的不明白您为什么要这样做只是重新使用构造函数。