55

使用 Visual Studio 2010 Professional,我有一个如下所示的ToString()方法:

public override string ToString()
{
    return "something" + "\n" + "something";
}

因为有几个“ something”,每个都很长,我想看看

something
something

可悲的是,我看到

"something\nsomething"

有没有办法得到我想要的?

4

2 回答 2

136

其实是有办法的。您可以在即时窗口中使用格式说明符来更改显示格式。如果您有一个带有回车符和换行符的字符串 ("\r\n"),您可以在打印请求后面加上“无引号”格式说明符。

在即时窗口类型中:

?MyObj.ToString(),nq

并且\r\n将在即时窗口中产生换行符。

有关格式说明符的更多信息,请参阅:http: //msdn.microsoft.com/en-us/library/e514eeby.aspx

于 2010-05-21T01:29:03.273 回答
-3

不幸的是,没有。这里发生的是调试器 API 设计的产物。

负责处理ToString()调用的组件是表达式求值器。它是大多数调试器窗口(watch、locals、immediate 等)的数据源。

对于除即时窗口外的每个窗口,该值都显示在一行上。在单行上显示多行字符串没有多大意义。因此,表达式求值器通过将换行符转义为可显示的版本,使字符串更易于显示。

这种技术对当地人和监视窗口非常有效。但是在显示多行值更有意义的即时窗口中,它的意义要小得多。不幸的是,表达式评估器不知道它的数据将显示在哪里的上下文,因此执行了安全操作,即转义换行符。

于 2010-05-19T20:22:23.480 回答