36

Utilizzando Visual Studio 2010 Professional, Ho un metodo ToString() che assomiglia a questo:Newlines nella finestra immediata

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

perché ci sono diversi "something" s 'e ciascuno è lunga, mi piacerebbe vedi

something 
something 

Purtroppo, sto vedendo

"something\nsomething" 

È ci aw posso ottenere quello che voglio?

+0

non riesco a riprodurre questo comportamento sul mio VS2010, ho la nuova riga nella finestra immediata. –

+0

Ci sono impostazioni Immediate Window che non vedo? –

+0

Spiacente stavo solo digitando il nome della var che fornisce l'output corretto, ho lo stesso comportamento di var.ToString() –

risposta

94

In realtà c'è un modo. È possibile utilizzare gli specificatori di formato nella finestra immediata per modificare il formato del display. Se si dispone di una stringa con ritorni a capo e linefeed ("\ r \ n"), è possibile seguire la richiesta di stampa con l'identificatore di formato "senza virgolette".

Nel tipo di finestra immediata:

?MyObj.ToString(),nq 

e la \r\n causerà nuove righe nella finestra immediata.

Per maggiori informazioni su identificatori di formato vedi: http://msdn.microsoft.com/en-us/library/e514eeby.aspx

+0

Grazie, funziona bene. Perché il punto interrogativo nella parte anteriore della variabile però? Sembra funzionare bene senza di esso. –

+7

@Samik R - Il punto interrogativo è richiesto in Visual BASIC ed è essenzialmente ignorato in C#. In BASIC, "?" è una abbreviazione per l'istruzione PRINT della console. –

+0

Grazie per aver condiviso le informazioni, è stato davvero utile per me! – psulek

-2

Purtroppo no non c'è. Quello che sta accadendo qui è un artefatto del design delle API del debugger.

Il componente responsabile dell'elaborazione della chiamata ToString() è l'analizzatore di espressioni. È la fonte di dati per la maggior parte delle finestre del debugger (watch, locali, immediate, ecc ...).

Per ogni finestra ma il valore immediato viene visualizzato su una singola riga. La visualizzazione di una stringa multilinea su una singola riga non ha molto senso. Quindi l'analizzatore di espressioni rende la stringa leggermente più visualizzabile sfuggendo a caratteri di nuova riga in una versione visualizzabile.

Questa tecnica funziona molto bene per la gente del posto e la finestra di visualizzazione. Ma nella finestra immediata dove ha più senso visualizzare il valore multilinea, ha molto meno senso. Sfortunatamente, il valutatore di espressioni non conosce il contesto in cui verranno visualizzati i dati e quindi l'operazione sicura che è quella di sfuggire ai newline.

+2

speravo per una sorta di opzione di configurazione "Escaping" che potrebbe essere disattivata per la finestra intermedia. Ahimè, non c'è nessuno! –

+2

-1 poiché la soluzione è inferiore. Buona spiegazione però. –

Problemi correlati