2016-07-08 83 views

回答

1

的主要區別在於,手錶被評估許多次,而評估表達僅手動評估。

想象一下,你有一個表達式object.incrementX()

如果您將此設置爲監視表達式,並且您要經歷正常的調試過程(運行程序,停止在斷點,步驟,步驟等......),您將看到x的值爲增加了很多次。

Wheres如果您評估表達式,那麼您可以控制它的執行時間。

一般規則是,如果表達式修改了狀態那麼您應該小心地將其置於監視表達式中,否則您可能會得到非常不可預知的結果。

+0

在你的例子中,incrementX()在遞增後返回x的值,對吧? –

+0

是的,它可以,但如果它返回無效,那麼你仍然可以評估表達式(並導致狀態的改變)。 – vikingsteve

0

與表達式評估功能不同,watch中的表達式作爲項目的一部分被持久化。觀察表達式總是在當前在「框架」窗格中檢查的堆棧框架的上下文中評估。

表達式評估只能是「單級」。如果在表達式評估中調用的方法在其主體內部具有斷點,則該斷點將被忽略。

Evaluate-Expression和Watch之間的一個重要區別是,在使用Evaluate Expression時,我們可以更改或修改參數(在方法的情況下),或者我們可以爲其添加其他邏輯計算。所以隨着手錶的功能,它還使我們能夠在需要時通過測試各種樣品情況來隨時調試代碼。

相關問題