为什么Visual Studio Debugger在显示中删除
本文关键字:显示 删除 Debugger Visual Studio 为什么 | 更新日期: 2023-09-27 18:03:19
我期望变量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
不省略 -它被求值。尝试在字符串的某个地方插入'"
,您将看到在helper窗口中出现双引号。类似地,如果您在即时窗口中输入a
,您将看到以下内容:
a
{"11
22"}
Text: "11'"'n''2'"2"
之所以省略,只是因为您正在查看的helper窗口将所有内容压缩到一行。
我认为这是求值的,因为这实际上是对象的摘要,所以它显示的是a.ToString()
的打印值- Visual Studio(正确地)将'n
解释为换行符。