繁体   English   中英

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

[英]Why does Visual Studio Debugger remove \n in display?

我希望以下代码中的变量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”)]也会得到相同的结果。

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

看起来Visual Studio正在显示Object.ToString()删除所有whitespaces

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

Visual Studio似乎是这样designed/coded

\\n 不会被省略 - 它被评估。 尝试插入\\"字符串中的某个地方,你会看到一个双引号将出现在窗口帮手同样,如果你进。 a到立即窗口中,您将看到以下内容:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM