He buscado mucho pero no he encontrado la solución. ¿Cómo se trata un DateTime que debería poder contener un valor no inicializado (equivalente a null)? Tengo una clase que puede tener un valor de propiedad DateTime establecido o no. Estaba pensando en inicializar el titular de la propiedad a DateTime.MinValue, que luego podría ser fácilmente comprobado. Supongo que esta es una pregunta bastante común, ¿cómo se hace eso?
En el caso de los DateTimes normales, si no los inicializa en absoluto, coincidirán con DateTime.MinValue
, porque es un tipo de valor en lugar de un tipo de referencia.
También se puede utilizar un DateTime anulable, así:
DateTime? MyNullableDate;
O la forma más larga:
Nullable<DateTime> MyNullableDate;
Y, por último, hay una forma incorporada para referenciar el valor por defecto de cualquier tipo. Esto devuelve null
para los tipos de referencia, pero para nuestro ejemplo DateTime devolverá lo mismo que DateTime.MinValue
:
default(DateTime)
Si utiliza .NET 2.0 (o posterior) puede utilizar el tipo nullable:
DateTime? dt = null;
o
Nullable<DateTime> dt = null;
y más tarde:
dt = new DateTime();
Y puedes comprobar el valor con
if (dt.HasValue)
{
// Do something with dt.Value
}
O puedes usarlo como:
DateTime dt2 = dt ?? DateTime.MinValue;
Puedes leer más aquí:
http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
Consideraría la posibilidad de utilizar un tipos anulables.
DateTime? myDate
en lugar de DateTime myDate
.