即时窗口中的换行符

使用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式评估者不知道数据将被显示在哪里的上下文,因此执行逃离换行符的安全操作。