Ik'heb al veel gezocht maar geen oplossing kunnen vinden. Hoe ga je om met een DateTime die een ongeinitialiseerde waarde (equivalent aan null) moet kunnen bevatten? Ik heb een klasse waarin een DateTime eigenschap al dan niet een waarde kan hebben. Ik dacht eraan om de eigenschaphouder te initialiseren op DateTime.MinValue, die dan gemakkelijk gecontroleerd kan worden. Ik veronderstel dat dit een veel voorkomende vraag is, hoe doe je dat?
Voor normale DateTimes geldt dat als je ze helemaal niet initialiseert ze zullen overeenkomen met DateTime.MinValue
, omdat het een waardetype is en geen verwijzingstype.
Je kunt ook een nullable DateTime gebruiken, zoals dit:
DateTime? MyNullableDate;
Of de langere vorm:
Nullable<DateTime> MyNullableDate;
En, tenslotte, is er een ingebouwde manier om naar de standaard van elk type te verwijzen. Dit geeft null
terug voor referentie types, maar voor ons DateTime voorbeeld zal het hetzelfde teruggeven als DateTime.MinValue
:
default(DateTime)
Als je .NET 2.0 (of later) gebruikt kun je het nullable type gebruiken:
DateTime? dt = null;
of
Nullable<DateTime> dt = null;
dan later:
dt = new DateTime();
En je kunt de waarde controleren met:
if (dt.HasValue)
{
// Do something with dt.Value
}
Of je kunt het gebruiken zoals:
DateTime dt2 = dt ?? DateTime.MinValue;
U kunt hier meer lezen:
http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
Ik'zou overwegen een nullable types te gebruiken.
DateTime? myDate
te gebruiken in plaats van DateTime myDate
.