DataTime "null" valor

I'tenho procurado muito mas não consegui'não encontrei uma solução. Como você lida com um DateTime que deve ser capaz de conter um valor não-inicializado (equivalente a nulo)? Eu tenho uma classe que pode ter um valor de propriedade DateTime definido ou não. Eu estava pensando em inicializar o detentor da propriedade para DateTime.MinValue, que então poderia ser facilmente verificado. Acho que esta é uma pergunta bastante comum, como você faz isso?

Solução

Para o DateTimes normal, se você não't os inicializar, eles irão corresponder a DateTime.MinValue porque é um tipo de valor e não um tipo de referência.

Você também pode usar um DateTime nulo, como este:

DateTime? MyNullableDate;

Ou a forma mais longa:

Nullable MyNullableDate;

E, finalmente, há's uma forma construída para referenciar o padrão de qualquer tipo. Isto retorna nulo para tipos de referência, mas para o nosso exemplo DateTime, retornará o mesmo que `DateTime.MinValue':

default(DateTime)
Comentários (5)

Se você're usar .NET 2.0 (ou posterior) você pode usar o tipo anulável:

DateTime? dt = null;

ou

Nullable dt = null;

então mais tarde:

dt = new DateTime();

E você pode verificar o valor com:

if (dt.HasValue)
{
  // Do something with dt.Value
}

Ou podes usá-lo como:

DateTime dt2 = dt ?? DateTime.MinValue;

Você pode ler mais aqui:
http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

Comentários (6)

I'd considerar o uso de um tipos anuláveis.

"DateTime? myDate" em vez de "DateTime myDate".

Comentários (0)