2011-07-14 17 views
7

Probablemente he estado trabajando demasiado, pero ¿alguien puede explicarme lo siguiente, tomado de la ventana Immediate?Problema raro con el cálculo de fecha y hora

(int)DateTime.Now.Date.DayOfWeek = 4

y

(int)DayOfWeek.Sunday = 0

y

(int)DateTime.Now.Date.DayOfWeek - (int)DayOfWeek.Sunday = 4

pero
(int)DayOfWeek.Sunday - (int)DateTime.Now.Date.DayOfWeek = No se pudo evaluar expression`

Gracias por leer.

EDIT:

Su la ventana Inmediato que me está dando este resultado raro, no código regular.

Captura de pantalla: http://ploader.net/files/0c2556df475b3075634d7fd2b0575794.PNG

Edit2:

La comunidad parecen pensar que es un error en VS2010. Me pregunto si @EricLippert o @JonSkeet podrían dedicar un minuto a confirmar esto o, si no es así, ofrecer una explicación sobre este comportamiento.

+0

Esto funciona bien para mí. ¿Puedes publicar todo tu código? Quizás hay algo más pasando aquí? – Jay

+0

No es código, solo el resultado de expresiones ad hoc en la ventana Inmediato. – 5arx

+1

@Jay Supongo que está hablando de la ventana inmediata cuando se depura. Lo probé y no funciona, pero no tengo idea de por qué. – Justin

Respuesta

5

Parece específico para la constante 0 y un valor no literal. Los siguientes funciona bien:

int zero = 0; 
zero - (int)DateTime.Now.Date.DayOfWeek 
-4 

Mientras que la siguiente falla:

int four = 4; 
0 - four 
Could not evaluate expression 

Actualización: no pude encontrar un informe de error similar, por lo que he creado uno: https://connect.microsoft.com/VisualStudio/feedback/details/679501/integer-literal-0-integer-variable-could-not-evaluate-expression-immediate-window

Actualización # 2: Microsoft puede reproducir el problema y lo ha resuelto como "No se Corrige", lo que significa que hay esperanza para la próxima versión de Visual Studio, pero no para VS2010.

+0

Estoy de acuerdo con eso. Sin duda es un error? ¿Obtengo algún tipo de premio por llamar la atención de los cabezas de huevo en el equipo de proyecto de Visual Studio? ;-) – 5arx

+1

Probablemente no, pero si Eric Lippert lee esto, es posible que lo solucione en la próxima versión. –

+0

Bueno, espero que @EricLippert esté leyendo. – 5arx

3

No tengo ni idea, parece un error para mí.

// This doesn't work 
0 - (int)DateTime.Now.Date.DayOfWeek 

// But loads of similar variations do: 
1 - (int)DateTime.Now.Date.DayOfWeek 
-1 - (int)DateTime.Now.Date.DayOfWeek 
a - (int)DateTime.Now.Date.DayOfWeek 
0 - (int)DayOfWeek.Thursday 

En cualquier caso, todo se comporta como se esperaba en el código compilado.

+0

Gracias a Dios por eso. Pensé que estaba empezando a volverme loco. – 5arx

Cuestiones relacionadas