36

l'aide de Visual Studio 2010 Professional, j'ai une méthode ToString() qui ressemble à ceci:Les nouvelles lignes dans la fenêtre immédiate

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

Parce qu'il ya plusieurs « something » de chacun est longue, je voudrais voir

something 
something 

Malheureusement, je vois

"something\nsomething" 

y at-il aw ay pour obtenir ce que je veux?

+0

Je ne peux pas reproduire ce comportement sur mon VS2010, je reçois la nouvelle ligne dans la fenêtre immédiate. –

+0

Y a-t-il des paramètres de fenêtre immédiate que je ne vois pas? –

+0

Désolé je ne faisais que taper le nom de la var qui donne la sortie correcte, j'ai le même comportement que vous avec var.ToString() –

Répondre

94

En fait, il y a un moyen. Vous pouvez utiliser des spécificateurs de format dans la fenêtre immédiate pour modifier le format de l'affichage. Si vous avez une chaîne avec des retours chariot et des sauts de ligne ("\ r \ n"), vous pouvez suivre la requête d'impression avec le spécificateur de format 'no quotes'.

Dans le type de fenêtre immédiate:

?MyObj.ToString(),nq 

et la \r\n causeront dans la fenêtre des sauts de ligne immédiate.

Pour plus d'informations sur spécificateurs voir: http://msdn.microsoft.com/en-us/library/e514eeby.aspx

+0

Merci, fonctionne bien. Pourquoi le point d'interrogation sur le devant de la variable? Cela semble fonctionner très bien sans cela. –

+7

@Samik R - Le point d'interrogation est requis dans Visual BASIC et est essentiellement ignoré en C#. En BASIC, "?" est un raccourci pour l'instruction PRINT de la console. –

+0

Merci pour le partage d'informations, c'était vraiment utile pour moi! – psulek

-2

Malheureusement, il n'y en a pas. Ce qui se passe ici est un artefact de la conception des API du débogueur.

Le composant responsable du traitement de l'appel ToString() est l'évaluateur d'expression. C'est la source de données pour la majorité des fenêtres du débogueur (watch, locales, immédiates, etc ...).

Pour chaque fenêtre mais la valeur immédiate est affichée sur une seule ligne. L'affichage d'une chaîne multiligne sur une seule ligne n'a pas beaucoup de sens. Par conséquent, l'évaluateur d'expression rend la chaîne légèrement plus visible en échappant des caractères de nouvelle ligne dans une version affichable.

Cette technique fonctionne plutôt bien pour les locaux et la fenêtre de surveillance. Mais dans la fenêtre immédiate où il est plus logique d'afficher la valeur multiligne, cela a beaucoup moins de sens. Malheureusement, l'évaluateur d'expression ne connaît pas le contexte dans lequel ses données seront affichées et, par conséquent, effectue l'opération en toute sécurité qui doit échapper aux nouvelles lignes.

+2

de {} j'espérais pour une sorte d'option de configuration "Echap" qui pourrait être désactivée pour la fenêtre intermédiaire. Hélas il n'y en a pas! –

+2

-1 puisque la solution est inférieure. Bonne explication cependant. –

Questions connexes