[英]Why does Visual Studio debugger shows a long hex value for an int?
[英]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.