为什么Visual Studio Debugger会删除\ n?

时间:2013-03-11 20:59:27

标签: c# visual-studio visual-studio-debugging

我希望以下代码中的变量 a 的调试器显示为{11 \ n22},但它是{1122}:

class A
{
    public string Text;
    public override string ToString()
    {
        return this.Text;
    }
}

A a = new A();
a.Text = "11\n22";

调试器显示在变量窗口中:

display string of the object  "{1122}"    // why not "{11\n22}" ?
a.Text                        "11\n22"
a.ToString()                  "11\n22"

使用VS2012和VS2010进行测试。我以前从未意识到这一点。有人知道为什么显示字符串省略\ n字符?

即使添加[DebuggerDisplay(“Text”)]也会得到相同的结果。

3 个答案:

答案 0 :(得分:4)

尝试固定它,你会看到你需要的东西。

答案 1 :(得分:2)

似乎Visual Studio显示Object.ToString()删除了所有 whitespaces

但如果你复制文字&将其粘贴到Notepad上,它会显示包含所有whitespaces的字符串。

Visual Studio似乎designed/coded就是这样!

答案 2 :(得分:0)

\n 被忽略 - 它被评估。尝试在字符串中的某处插入\",您将看到辅助窗口中出现双引号。同样,如果您在即时窗口中输入a,您将看到以下内容:

a
{"11
22"}
    Text: "11\"\n\\2\"2"

它似乎只是被省略了,因为你正在寻找的辅助窗口将所有东西都拼凑成一行。

我认为这是评估的,因为它实际上是对象的摘要,所以它显示的是a.ToString()的打印值 - Visual Studio正确地解释{ {1}}作为换行符。