2012-06-22 18 views
5

Tengo un método constructor similar a esto:¿Por qué pierdo milisegundos de un DateTime cuando se pasa a un método que toma Nullable DateTime?

public class Foo 
{ 
public Foo (DateTime? startFrom) 
     { 
      _startFrom = startFrom; 
     } 
} 

Y yo estoy llamando a este método constructor de la siguiente manera:

var context = new Foo(new DateTime(2012, 7, 15, 11, 2, 10, 2)); // 2 miliseconds 

Pero cuando depurarlo, me parece que los 002 milisegundos se establecen en 000 cuando se pasa al constructor predeterminado que es un parámetro Nullable DateTime.

¿Es normal que pierda los milisegundos de un DateTime cuando lo paso como un parámetro a un método que toma Nullable DateTime?

+0

¿Cómo está viendo los contenidos del DateTime? El depurador utiliza DateTime.ToString() que no muestra milisegundos. Si expande el objeto en el depurador, verá los milisegundos. –

Respuesta

4

No, no es normal, y sospecho fuertemente que se trata de un problema de diagnóstico.

Cuando depura el código, sospecho que está usando una ventana de reloj que no muestra los milisegundos en su representación de cadena. Expanda la variable en sí y estoy seguro de que verá que se conserva el componente de milisegundos.

(Si eso es no el caso, proporcione un programa corto pero completo que demuestra el problema, en lugar de sólo el fragmento que has demostrado.)

0

No, no es y no es el caso, el La ventana de depuración no muestra milisegundos, eso es todo.

Se abrió una nueva solución VS2010 y no se puede reproducir lo que dice. ¡Al mirar la parte de milisegundos, el valor es 2!

1

Acabo de probarlo y obtengo los milisegundos. ¿Cómo estás verificando esto?

lo corrió en modo de depuración e inspeccionado su context._startFrom.Millisecond que tiene el valor de 2.

¿Está confiando en ToString salida()? Eso no muestra de forma predeterminada milisegundos.

Cuestiones relacionadas