Newlines dans la fenêtre immédiate

En utilisant Visual Studio 2010 Professional, j’ai une méthode ToSsortingng() qui ressemble à ceci:

 public override ssortingng ToSsortingng() { return "something" + "\n" + "something"; } 

Comme il y a plusieurs ” something ” et que chacun est long, j’aimerais voir

 something something 

Malheureusement, je vois

 "something\nsomething" 

Y a-t-il un moyen d’obtenir ce que je veux?

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 demande d’impression avec le spécificateur de format ‘no quotes’.

Dans le type de fenêtre immédiate:

 ?MyObj.ToSsortingng(),nq 

et le \r\n provoquera des nouvelles lignes dans la fenêtre immédiate.

Pour plus d’informations sur les spécificateurs de format, voir: http://msdn.microsoft.com/en-us/library/e514eeby.aspx

Malheureusement non 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 ToSsortingng() est l’évaluateur d’expression. C’est la source de données pour la majorité des fenêtres du débogueur (watch, locals, immediate, 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 affichable en évitant les caractères de nouvelle ligne dans une version affichable.

Cette technique fonctionne assez bien pour les habitants et la fenêtre de surveillance. Mais dans la fenêtre immédiate où il est plus judicieux 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 effectue donc l’opération sûre qui consiste à échapper aux nouvelles lignes.