Подтвердить что ты не робот

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

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

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

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

something
something

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

"something\nsomething"

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

4b9b3361

Ответ 1

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

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

?MyObj.ToString(),nq

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

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

Ответ 2

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

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

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

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