2012-01-17 20 views
9

he cortado con tijeras siguiente código:Inspeccionar valor de retorno sin asignarlo a una variable

... 
var tpc = new ThirtPartyClass(); 

tpc.ExecuteCommand(); 
tpc.ExecuteCommand(); 
... 

El método ExecuteCommand() devuelve un valor entero con un poco de información. Para la depuración, quiero saber los valores devueltos. Pero no quiero asignar el resultado a una variable (var result = tpc.ExecuteCommand()).

¿Existe en VisualStudio 2010 una posibilidad durante la depuración de inspeccionar este valor de retorno sin asignarlo a una variable temporal?

Gracias de antemano por sus sugerencias

editar: Por último, esta función se ha añadido a VS2013

Respuesta

8

Usted puede hacer eso con IntelliTrace en VS2010, por el cambio a la "llama Ver" y luego la comprobación de los Autos ventana:

enter image description here

Pero incluso sin eso, no se preocupe por ella; si no usa la variable (excepto mirando en el depurador cuando está en pausa), en una compilación de lanzamiento será eliminada y reemplazada con solo un "pop" (que es lo que obtiene si no capta la devolución) valor en primer lugar).

Así:

static void Main() 
{ 
    int i = SomeMethod(); 
} 

Compila como:

.method private hidebysig static void Main() cil managed 
{ 
    .entrypoint 
    .maxstack 8 
    L_0000: call int32 Program::SomeMethod() 
    L_0005: pop 
    L_0006: ret 
} 

nota sin .locals y sin stloc.

Para ReSharper, utilice:

// ReSharper disable UnusedVariable 
    int i = SomeMethod(); 
// ReSharper restore UnusedVariable 
+0

:-) usted tiene razón. Mi único problema es que ese adaptador no le gusta este tipo de código con 'la variable local nunca se usa'. Y no quiero suprimir este tipo de advertencia, porque en muchos casos ayuda ... – rhe1980

+1

Tantas veces no me han asignado algo y desearía que hubiera sido antes de que comenzara a depurar. Sería bueno si apareciera con variables locales o algo así. –

+1

@ rhe1980 Me pregunto si r # tiene una opción "no aplicar esto ** aquí **" ... editar: lo hace - ver edición –

0

Se puede utilizar un reloj o utilizar la ventana inmediata durante la depuración. Puede copiar código en la ventana inmediata para ejecutarlo durante la depuración para ver qué devuelve. Sin embargo, ejecutará el código nuevamente para obtener el valor de retorno.

+6

Solo para agregar a esto, hacerlo de esta manera supone que el método que se llama es idempotente. Tenga en cuenta los posibles efectos secundarios de la llamada adicional también. – Clafou

2

AFAICT, si utiliza BugAid puede mostrar los valores de retorno como se ve la imagen aquí:

Return value

Cuestiones relacionadas