Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改字符串生成器对象中的整个字符串_C#_String_Stringbuilder - Fatal编程技术网

C# 更改字符串生成器对象中的整个字符串

C# 更改字符串生成器对象中的整个字符串,c#,string,stringbuilder,C#,String,Stringbuilder,我有以下代码: using System; using System.Text; public class Program { private static StringBuilder mystrb = new StringBuilder("hello"); public static void Main() { mystrb.Clear(); mystrb.Append("chau"); } } 有没有其他方法可以完全替换字符

我有以下代码:

using System;
using System.Text;

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

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

重新构造字符串生成器有什么错?旧的将被垃圾收集

mystrb = new StringBuilder("chau");

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

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

mystrb = new StringBuilder("chau");

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

static void StringBuilderReplaceText(StringBuilder sb, string newText)
{
    sb.Clear();
    sb.AppendLine(newText);
}
我最初打算简单地继承
StringBuilder
对象,并添加一个新的
Replace
扩展方法,但显然该对象是出于某种原因


因此,从技术上讲,这将允许您稍后使用
StringBuilderReplaceText(myStringBuilder,“我的新文本”)用一行替换
StringBuilder
的内容但是我真的不明白为什么你要这样做,而不只是重复使用构造函数。

.Clear()清除它有什么错?-一行按要求
mystrb.Clear().Append(“chau”)也是一种方法:)一句话=一行?不先创建它怎么样?然后创建一个新实例。
static void StringBuilderReplaceText(StringBuilder sb, string newText)
{
    sb.Clear();
    sb.AppendLine(newText);
}