Новые строки в непосредственном окне

Используя Visual Studio 2010 Professional, у меня есть ToString() метод, который выглядит так:

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

Потому что есть несколькоsomethingи каждый длинный, я хотел бы видеть

something
something

К сожалению, я вижу

"something\nsomething"

Есть ли способ получить то, что я хочу?

2 ответа

Решение

На самом деле есть способ. Вы можете использовать спецификаторы формата в ближайшем окне, чтобы изменить формат отображения. Если у вас есть строка с возвратом каретки и переводом строки ("\r\n"), вы можете следовать запросу на печать со спецификатором формата "без кавычек".

В ближайшем окне введите:

?MyObj.ToString(),nq

и \r\n вызовет новые строки в ближайшем окне.

Для получения дополнительной информации о спецификаторах формата см.: http://msdn.microsoft.com/en-us/library/e514eeby.aspx

К сожалению нет там нет. То, что здесь происходит, является артефактом дизайна API отладчика.

Компонент, ответственный за обработку ToString() вызов является оценщиком выражений. Это источник данных для большинства окон отладчика (часы, местные, немедленные и т. Д.).

Для каждого окна, кроме непосредственного, значение отображается в одной строке. Отображение многострочной строки в одной строке не имеет особого смысла. Следовательно, оценщик выражений делает строку немного более отображаемой, экранируя символы новой строки в отображаемую версию.

Эта техника работает очень хорошо для местных жителей и смотрового окна. Но в ближайшем окне, где имеет смысл отображать многострочное значение, гораздо меньше смысла. К сожалению, оценщик выражений не знает контекста, в котором будут отображаться его данные, и, следовательно, выполняет безопасную операцию, которая заключается в том, чтобы избежать перехода на новую строку.

Другие вопросы по тегам