2012-01-17 108 views
9

我具有以下剪断代码:没有分配给它的返回值,检查一个变量

... 
var tpc = new ThirtPartyClass(); 

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

的ExecuteCommand()方法返回与某些信息的int值。 对于调试,我想知道这个返回值。但我不想将结果分配给变量(var result = tpc.ExecuteCommand())。

在VisualStudio 2010中是否有在调试期间检查此返回值而不将其分配给临时变量的可能性?

预先感谢您的建议

编辑:最后,这一功能已经被添加到VS2013

回答

8

你可以做到这一点的IntelliTrace VS2010中,通过切换到“电话查看”,然后检查汽车窗口:

enter image description here

但即使没有,也不用担心它;如果你不使用这个变量(除非在暂停时查看调试器),那么在发布版本中,它将被删除并替换为“pop”(这是你得到的,如果你没有收到回报价值在第一位)。

所以:

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

编译如下:

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

注意到没有.locals并没有stloc

ReSharper的,使用方法:

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

:-)你是对的。我唯一的问题是,resharper不喜欢这种代码'局部变量永远不会使用'。我不想压制这种警告,因为在很多情况下,它可以帮助... – rhe1980 2012-01-17 11:39:01

+1

很多次我没有把它分配给某些东西,并希望它已经在我开始调试之前。如果它出现局部变量或什么的,会很好。 – 2012-01-17 11:39:41

+1

@ rhe1980我不知道是否r#有一个“不要在这里应用**这里**”选项...编辑:它确实 - 看到编辑 – 2012-01-17 11:39:58

0

你可以用手表或调试过程中使用即时窗口。您可以将代码复制到即时窗口中,以在调试期间运行它以查看返回的内容。但是,它将再次执行代码以获取返回值。

+6

只是为了增加这一点,以这种方式进行,假设被调用的方法是幂等的。请注意额外通话的可能副作用。 – Clafou 2012-01-17 11:42:12

2

AFAICT,如果你使用BugAid它可以显示的返回值这里看到的图像:

Return value

相关问题