3

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

4

3 回答 3

4

尝试固定它,你会看到你需要什么。

于 2013-03-11T21:36:17.333 回答
2

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

但是,如果您复制文本并将其粘贴到Notepad它上面,则会显示带有所有whitespaces.

视觉工作室似乎designed/coded是这样的!

于 2013-03-11T21:27:55.410 回答
0

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

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

它似乎只是被省略了,因为您正在查看的帮助窗口将所有内容压缩到一行中。

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

于 2013-03-11T21:58:20.563 回答