Questo non è controllato dagli attributi. È una caratteristica intrinseca del debugger.
Il motivo alla base di questa funzione è di impedire valutazioni di funzione indesiderate da parte dell'utente. Func Evals è un'operazione pericolosa nel debugger e può causare rallentamenti significativi o stato di programma corrotto. Il debugger si impegna a fare in modo che non esegua inavvertitamente evasioni di funzioni extra che potrebbero peggiorare la tua esperienza di debug.
Nel caso in cui vi sia un elemento nell'orologio/locals/finestra automatica che può causare una funzione e il debugger non crede che dovrebbe verificarsi una funzione, il valore si oscurerà e verrà visualizzato un pulsante di aggiornamento in la colonna del valore. Cliccando su quel pulsante si dice al debugger, "no davvero voglio valutare quell'espressione".
Ci sono molti motivi per cui questo accadrà nel debugger. Il seguente 2 è il più probabile.
implicita valutazione di proprietà è disattivata
Strumenti - > Debugger - > Opzioni - > Abilita implicito Proprietà valutazione
Se questo valore non è selezionata, si indica il debugger si prega di non auto-valutare proprietà. Le proprietà sotto il cofano sono solo chiamate di funzione. Sono generalmente più sicuri delle normali chiamate di funzione, ma non sempre.
Ma è comunque possibile forzare le proprietà da valutare digitandole direttamente nella finestra di controllo. Se si digita 2 di seguito, il primo valore diventerà "obsoleto". Questo perché digitando una seconda espressione nella finestra di controllo causerà una nuova valutazione di tutte le altre espressioni. Perché? Perché l'atto di valutare qualsiasi espressione avrebbe potuto alterare i risultati degli altri.
Poiché la funzione implicita è disattivata, la prima proprietà non verrà valutata automaticamente e sarà necessario forzarla.
Funz Kit e Passo
Se si aggiunge un'espressione per la finestra di controllo che fa una valutazione funzione e poi fare un passo il funzionamento, il valore sarà "staled" nella finestra di controllo.
Questo viene fatto per molte ragioni, una delle ragioni più importanti è il potenziamento delle prestazioni. È molto comune per un utente digitare molte espressioni nella finestra di controllo e non è raro avere una valutazione della funzione. Uno alla volta questi non sono molto lenti.Ma immagina che stai provando a passare velocemente attraverso un po 'di codice e hai avuto 10 errori di funzionamento nella finestra di controllo. Ciò può rapidamente sommarsi e degradare significativamente la tua esperienza di step. Pertanto le valutazioni funzionali non vengono rivalutate automaticamente.
Ho rovinato alcune sessioni di debug spostando il mouse dove non dovevo e valutando le proprietà dei mock. Ciò ha gettato le aspettative che avevo creato attraverso la finestra. –