2010-10-20 14 views
5

Solo sulla mia macchina ciò accade. pratica se si esegue il seguente tutto è come previsto:Perché cast restituisce sempre zero solo durante il debugging in VS2010?

 double d = 500.22; 
     int i = (int)d; 
     Console.WriteLine(i.ToString()); 

uscita è 500.

Tuttavia se metto un punto di interruzione sulla prima riga e passo attraverso, ho ritorna sempre a zero e l'uscita è 0.

Ho provato questo su altre macchine e non riesco a replicare, ho anche reinstallato VS2010 e succede ancora. Quindi penso che debba essere una sorta di ambiente che ho sul mio sistema, ma non riesco a capire cosa.

Chiunque altro ha avuto questo problema e come posso liberarmene.

Cheers.

MODIFICA: Sembra che il problema riguardi solo la seconda linea. Se metto un punto di interruzione sulla prima riga e poi solo su F5, allora va tutto bene. Ma se passo alla/2a riga, il casting non sembra funzionare e io resto a 0.
Ho anche provato a impostare prima a 1 e poi a vedere se il cast funziona, ma cambia di nuovo a 0 e rimuove il mio valore iniziale di 1.

Ecco uno screenshot:

alt text

+0

Hai attraversato, o sei passato? – codymanix

+0

Se intendi entrare o finire, allora ho fatto entrambe le cose. – HAdes

+0

Potresti fornire screenshot? Stai dicendo che il debugger afferma che ho == 0 nella descrizione quando si passa il mouse? O lo stato == 0 nella finestra di controllo? O finestra immediata? Dov'è il tuo codice quando ciò accade? Rottura su Console.WriteLine? – sisve

risposta

0

Provare a correre VS con /SafeMode o /ResetSettings argomenti della riga di comando

+0

grazie per il suggerimento, tuttavia accade sempre la stessa cosa. – HAdes

1

avete tutte le ultime servizio .NET Framework cerotti? Ce ne sono anche per il framework 4.0, anche se non ho ancora sentito nulla di simile.

* Edit *
Per quanto riguarda gli altri miei suggerimenti, lanciando ad un int tronca, e Convert.ToInt32 round, quindi Convert.ToInt32 è quello che in genere si desidera comunque (soprattutto se funziona).

+0

Penso di essere completamente aggiornato poiché l'aggiornamento di Windows non ha rilevato nulla. – HAdes

+0

questo è un buon punto, non mi sono reso conto che il lancio si interrompe e non si arrotonda. Mi sono sempre chiesto cosa fosse il diff. Saluti. – HAdes

0

Nota che nella vostra schermata non si è l'output i, si sta output d --potete non sono in realtà utilizza i. Non riesco a riprodurre il comportamento che hai descritto, ma mi avvicino se inserisco un punto di interruzione su WriteLine in modalità di rilascio: i non esiste nemmeno in quel caso. Ma perché dovrebbe, non lo stai usando. (Nota: ho usato il codice nella tua schermata per la riproduzione, non il codice che utilizza effettivamente i.)

+0

whoops, scusa, sì ho fatto una modifica per vedere cosa avrebbe fatto, ma ancora lo stesso problema. Ad ogni modo, questo è irrilevante in quanto il problema è con la seconda linea, non con la linea della console. Proverò a ripristinare il problema relativo alla modalità di rilascio e a vedere. – HAdes

Problemi correlati