36

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

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

Потому что есть несколько «something» 's и каждый из них долго, я хотел бы см

something 
something 

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

"something\nsomething" 

есть ли Aw ай получить то, что я хочу?

+0

Я не могу воспроизвести это поведение на моем VS2010, я получаю новую строку в ближайшем окне. –

+0

Есть ли настройки окна Immediate Window, которые я не вижу? –

+0

Извините, я просто набрал имя var, которое дает правильный результат, я получаю то же поведение, что и вы с var.ToString() –

ответ

94

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

В немедленного типа окна:

?MyObj.ToString(),nq 

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

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

+0

Спасибо, работает красиво. Почему знак вопроса в передней части переменной? Кажется, он работает отлично, без него. –

+7

@Samik R - знак вопроса требуется в Visual BASIC и по существу игнорируется в C#. В BASIC «?» является сокращением для инструкции консоли PRINT. –

+0

Спасибо за обмен информацией, это было действительно полезно для меня! – psulek

-2

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

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

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

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

+2

Я надеялся для своего рода опции «Escaping» Config, которая может быть отключена для промежуточного окна. Увы, нет! –

+2

-1, так как решение ниже. Хорошее объяснение. –