36

mediante Visual Studio 2010 Professional, tengo un método ToString() que tiene este aspecto:saltos de línea en la ventana Inmediato

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

Debido a que hay varios "something" 's y cada uno es larga, me gustaría ver

something 
something 

Lamentablemente, estoy viendo

"something\nsomething" 

¿hay AW ay para obtener lo que quiero?

+0

no puede reproducir este comportamiento en mi VS2010, consigo la nueva línea en la ventana inmediata. –

+0

¿Hay configuraciones de ventana Inmediato que no veo? –

+0

Lo siento, estaba escribiendo el nombre de la var que da el resultado correcto, obtengo el mismo comportamiento que con var.ToString() –

Respuesta

94

En realidad, hay una manera. Puede usar los especificadores de formato en la ventana inmediata para cambiar el formato de la pantalla. Si tiene una cadena con retornos de carro y avances de línea en ella ("\ r \ n"), puede seguir la solicitud de impresión con el especificador de formato "sin comillas".

En el tipo de ventana inmediata:

?MyObj.ToString(),nq 

y la \r\n causarán nuevas líneas en la ventana inmediata.

Para obtener más información sobre los especificadores de formato ver: http://msdn.microsoft.com/en-us/library/e514eeby.aspx

+0

Gracias, funciona bien. ¿Por qué el signo de interrogación en el frente de la variable sin embargo? Parece funcionar bien sin eso. –

+7

@Samik R: el signo de interrogación se requiere en Visual Basic y esencialmente se ignora en C#. En BASIC, "?" es una abreviatura de la instrucción IMPRESIÓN de la consola. –

+0

¡Gracias por compartir información, fue realmente útil para mí! – psulek

-2

Desafortunadamente no, no lo hay. Lo que sucede aquí es un artefacto del diseño de las API del depurador.

El componente responsable de procesar la llamada ToString() es el evaluador de expresiones. Es la fuente de datos para la mayoría de las ventanas del depurador (watch, locals, immediate, etc ...).

Para cada ventana pero el valor inmediato se muestra en una sola línea. Mostrar una cadena multilínea en una sola línea no tiene mucho sentido. Por lo tanto, el evaluador de expresiones hace que la cadena sea ligeramente más fácil de visualizar escapando caracteres de nueva línea en una versión que se puede visualizar.

Esta técnica funciona bastante bien para los lugareños y la ventana de observación. Pero en la ventana inmediata donde tiene más sentido mostrar el valor de línea múltiple tiene mucho menos sentido. Lamentablemente, el evaluador de expresiones no conoce el contexto en el que se mostrarán sus datos y, por lo tanto, realiza la operación segura para evitar las nuevas líneas.

+2

Tenía la esperanza para algún tipo de Opción de Configuración "Escapando" que podría desactivarse para la Ventana Intermedia. ¡Ay, no hay ninguno! –

+2

-1 ya que la solución está a continuación. Buena explicación sin embargo. –

Cuestiones relacionadas