2010-10-20 17 views
5

Solo en mi máquina esto sucede. Básicamente, si corro el siguiente todo es como se esperaba:¿Por qué el molde siempre devuelve cero solo cuando se depura en VS2010?

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

de salida es de 500.

Sin embargo si pongo un punto de interrupción en la primera línea y el paso a través, que siempre vuelve a cero y la salida es 0.

He probado esto en otras máquinas y no puedo replicar, incluso he reinstalado VS2010 y todavía sucede. Así que estoy pensando que debe haber algún tipo de configuración de entorno que tengo en mi sistema, pero no puedo entender qué.

Alguien más tenía este problema y cómo me deshago de él.

Saludos.

EDITAR: Parece que el problema es solo con la 2da línea. Si pongo un punto de quiebre en la 1.ª línea y luego solo F5 sobre él, entonces todo está bien. Pero si entro/sobre la 2da línea, el casting no parece funcionar y me quedo en 0.
También intenté establecer i a 1 primero y luego ver si el molde funciona, pero cambia de nuevo a 0 y elimina mi valor inicial de 1.

Aquí hay una captura de pantalla:

alt text

+0

¿Pasó, o lo pisó? – codymanix

+0

Si quieres decir entrar o salir, he hecho ambas cosas. – HAdes

+0

¿Podría proporcionar capturas de pantalla? ¿Estás diciendo que el depurador dice que i == 0 en la información sobre herramientas cuando cierras? ¿O dice i == 0 en la ventana del reloj? O ventana inmediata? ¿Dónde está tu código cuando eso sucede? ¿Rompiendo en Console.WriteLine? – sisve

Respuesta

0

intenta ejecutar VS con /SafeMode o /ResetSettings argumentos de línea de comandos

+0

gracias por la sugerencia, sin embargo, aún sucede lo mismo. – HAdes

1

¿tiene usted todo el servicio más reciente de .NET Framework parches? Incluso hay algunos para el marco 4.0, aunque todavía no he escuchado nada como esto.

* Editar *
En cuanto a mis otras sugerencias, echando a un int trunca, y Convert.ToInt32 rondas, así Convert.ToInt32 es lo que generalmente quiere de todos modos (especialmente si está funcionando).

+0

Creo que estoy totalmente actualizado ya que ejecutar la actualización de Windows no recogió nada. – HAdes

+0

ese es un buen punto, no me di cuenta de que el casting trunca y no redondea. Siempre me pregunté cuál era la diferencia. aclamaciones. – HAdes

0

Nótese que en la captura de pantalla que no está dando salida i, que estés salida d --usted no está utilizando realmente i. No puedo reproducir el comportamiento que ha descrito, pero me acerco si coloco un punto de interrupción en WriteLine en el modo de lanzamiento: i ni siquiera existe en ese caso. Pero por qué debería, no lo estás usando. (Tenga en cuenta que utilicé el código en su captura de pantalla para repro, no el código que realmente usa i.)

+0

whoops, lo siento, sí, hice una modificación para ver lo que haría, pero sigue siendo el mismo problema. De todos modos, eso es irrelvant ya que el problema es con la segunda línea, no con la línea de la consola. Trataré de volver a publicar el problema del modo de lanzamiento y lo veré. – HAdes

Cuestiones relacionadas