即时窗口中的换行符
使用Visual Studio 2010 Professional,我有一个如下所示的ToString()
方法:
public override string ToString() { return "something" + "\n" + "something"; }
因为有几个“ something
”,每个都很长,所以我想看看
something something
可悲的是,我正在看
"something\nsomething"
有没有办法得到我想要的?
其实有一个办法。 您可以在即时窗口中使用格式说明符来更改显示的格式。 如果您有一个带回车符和换行符的string(“\ r \ n”),您可以使用“无引号”格式说明符跟随打印请求。
在即时窗口中input:
?MyObj.ToString(),nq
而\r\n
将在直接窗口中导致换行符。
有关格式说明符的更多信息,请参阅: http : //msdn.microsoft.com/en-us/library/e514eeby.aspx
不幸的是没有。 这里发生的事情是debugging器APIdevise的人为因素。
负责处理ToString()
调用的组件是expression式计算器。 这是大多数debugging窗口(手表,当地人,直接等等)的数据源。
对于每一个窗口,只是立即显示在一行上。 在一行上显示多行string没有多大意义。 因此,expression式计算器通过将换行符转义为可显示的版本,使string稍微更显示。
这种技术对于当地人和观察窗来说效果很好。 但是,在显示多行值更有意义的直接窗口中,它使得更less意义。 不幸的是,expression式评估者不知道数据将被显示在哪里的上下文,因此执行逃离换行符的安全操作。