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