Новые строки в окне "Немедленное"
Используя Visual Studio 2010 Professional, у меня есть метод ToString()
, который выглядит следующим образом:
public override string ToString()
{
return "something" + "\n" + "something";
}
Поскольку существует несколько "something
", и каждый из них длинный, я хотел бы видеть
something
something
К сожалению, я вижу
"something\nsomething"
Есть ли способ получить то, что я хочу?
Ответы
Ответ 1
На самом деле есть способ. Вы можете использовать спецификаторы формата в непосредственном окне, чтобы изменить формат отображения. Если в нем есть строка с возвратами каретки и переводами строк ( "\ r\n" ), вы можете следовать запросу печати с помощью спецификатора формата "Без кавычек".
В ближайшем окне введите:
?MyObj.ToString(),nq
а \r\n
вызовет новые строки в ближайшем окне.
Для получения дополнительной информации о спецификаторах формата см.
http://msdn.microsoft.com/en-us/library/e514eeby.aspx
Ответ 2
К сожалению, нет. То, что происходит здесь, является артефактом дизайна API-интерфейсов отладчика.
Компонент, ответственный за обработку вызова ToString()
, является оценщиком выражения. Это источник данных для большинства окон отладчика (часы, локальные, немедленные и т.д.).
Для каждого окна, но сразу же значение отображается в одной строке. Отображение многострочной строки в одной строке не имеет большого смысла. Следовательно, оценщик выражения делает строку немного более отображаемой, экранируя символы новой строки в отображаемую версию.
Эта техника работает очень хорошо для локальных жителей и окна просмотра. Но в ближайшем окне, где имеет смысл отображать многострочное значение, он имеет гораздо меньший смысл. К сожалению, оценщик выражения не знает контекста того, где будут отображаться данные, и, следовательно, безопасная операция, которая должна избегать новых строк.