我希望以下代码中的变量 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”)]也会得到相同的结果。
答案 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}}作为换行符。