Новые строки в непосредственном окне - PullRequest
42 голосов
/ 19 мая 2010

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

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

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

something
something

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

"something\nsomething"

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

Ответы [ 2 ]

108 голосов
/ 21 мая 2010

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

В типе непосредственного окна:

?MyObj.ToString(),nq

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

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

0 голосов
/ 20 мая 2010

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

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

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

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

...