2012-01-17 111 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

相關問題