我有以下代码:
using System;
using System.Text;
public class Program
{
private static StringBuilder mystrb = new StringBuilder("hello");
public static void Main()
{
mystrb.Clear();
mystrb.Append("chau");
}
}
有没有其他方法可以在字符串构建器中直接替换字符串,我正在寻找一种单句方式(如果存在的话)。
答案 0 :(得分:3)
重新构建StringBuilder有什么问题?旧的只是垃圾收集。
mystrb = new StringBuilder("chau");
答案 1 :(得分:1)
最好的选择是不要使用默认实例化。由于您要立即用其他内容替换它,只需将其留空(new StringBuilder()
)或null。
private static StringBuilder mystrb;
如果您的示例代码过于简化,那么只需创建一个新实例:
mystrb = new StringBuilder("chau");
答案 2 :(得分:0)
我认为Ian的解决方案只是用一个新的方法覆盖你的对象是最好的解决方案,但如果由于某种原因你不喜欢它,那么你可以做这样的事情:
static void StringBuilderReplaceText(StringBuilder sb, string newText)
{
sb.Clear();
sb.AppendLine(newText);
}
我最初只是从StringBuilder
对象继承而添加了一个新的Replace
扩展方法,但由于某种原因,该对象显然是sealed。
所以,从技术上讲,这将允许您稍后使用StringBuilder
将StringBuilderReplaceText(myStringBuilder, "my new text");
的内容替换为一行,但我真的不明白您为什么要这样做这不仅仅是重用构造函数。