C# StringBuilder.ToString()正在添加'\';字符串开头和结尾的字符

C# StringBuilder.ToString()正在添加'\';字符串开头和结尾的字符,c#,stringbuilder,C#,Stringbuilder,StringBuilder.ToString()正在字符串的开头和结尾添加“\”字符 为什么会这样 在调用.ToString()之前,字符串没有“\”字符。StringBuilder中有什么文本 下面的代码只是为我写下“hello” 我遗漏了什么吗?除了您添加的字符外,不添加任何字符。可能您正在查看由string builder创建的字符串的调试视图,并且在其前面有反斜杠(\),以便复制调试输出 \字符实际上并不在字符串数据本身中,而是字符串的显示的一部分 编辑:这里有一个您可以运行的测试 pr

StringBuilder.ToString()
正在字符串的开头和结尾添加“\”字符

为什么会这样


在调用.ToString()之前,字符串没有“\”字符。

StringBuilder中有什么文本

下面的代码只是为我写下“hello”

我遗漏了什么吗?

除了您添加的字符外,不添加任何字符。可能您正在查看由string builder创建的字符串的调试视图,并且在其前面有反斜杠(
\
),以便复制调试输出

\
字符实际上并不在字符串数据本身中,而是字符串的显示的一部分

编辑:这里有一个您可以运行的测试

private static void TestStringBuilder()
{
    StringBuilder builder = new StringBuilder();
    builder.Append(@"""saoetuhasoethuasteuhasoetnuh""");
    foreach (char c in builder.ToString())
    {
        System.Diagnostics.Debug.Assert(c != '\\', "EPIC STRINGBUILDER FAIL");
    }
}

你在想这些反斜杠吗

如果是这样的话,就是误读了输出:反斜杠实际上不在字符串中。它们仅在此处显示,以便根据C#语法使表示有效。例如,如果要使用
Console.WriteLine
输出字符串,它将不会有反斜杠


公平地说,这是不一致的。
StringBuilder
的调试视图没有反斜杠,但是字符串的调试视图有反斜杠。

请将代码放在这里,以便我们可以看到。-790个问题之后,人们会认为您应该问更少的基本问题,或者至少有更好的编写。或者甚至学习拼写检查。是的,考虑到编辑问题没有赢得任何代表性,令人惊讶的是有多少编辑这么做。当然,这个问题的措辞可能更好,但它远远不值得任何反对票或接近票。这也是一个“真实”的问题,这已经被相当好的anwsers证明了。这并不是一个真正的答案,因为你听起来很不确定,而且这个问题在目前的状态下是错误的。@Dykam:我认为这是一个有用的答案。它为OP提供了一个正确的工作示例。@Dykam这可能是因为我没有得到与提问者相同的结果,他也没有给我太多的信息,这是非常真实的,但我觉得这有点像一个评论。这是因为你添加了一句话。“\”实际上不存在于te字符串中。这只是调试器的一个可视化。单击放大镜,您将在stringbuilder中看到真实的文本@柯克·沃尔:现在有阴影了!:-戴伊,旗手,汉斯在开玩笑,你现在可以停止标记他的评论了。@Timwi,这是冒犯吗?你知道,他实际上并没有投反对票。点击你的votecount,你可以看到这个。
private static void TestStringBuilder()
{
    StringBuilder builder = new StringBuilder();
    builder.Append(@"""saoetuhasoethuasteuhasoetnuh""");
    foreach (char c in builder.ToString())
    {
        System.Diagnostics.Debug.Assert(c != '\\', "EPIC STRINGBUILDER FAIL");
    }
}