Έχω ψάξει πολύ, αλλά δεν μπόρεσα να βρω λύση. Πώς αντιμετωπίζετε ένα DateTime που θα πρέπει να μπορεί να περιέχει μια μη αρχικοποιημένη τιμή (ισοδύναμη με null); Έχω μια κλάση η οποία μπορεί να έχει μια τιμή της ιδιότητας DateTime ορισμένη ή όχι. Σκεφτόμουν να αρχικοποιήσω τον κάτοχο της ιδιότητας σε DateTime.MinValue, η οποία στη συνέχεια θα μπορούσε εύκολα να ελεγχθεί. Υποθέτω ότι αυτή είναι μια αρκετά συνηθισμένη ερώτηση, πώς το κάνετε αυτό;
Για τα κανονικά DateTimes, αν δεν τα αρχικοποιήσετε καθόλου, τότε θα ταιριάζουν με το DateTime.MinValue
, επειδή πρόκειται για τύπο τιμής και όχι για τύπο αναφοράς.
Μπορείτε επίσης να χρησιμοποιήσετε ένα nullable DateTime, όπως αυτό:
DateTime? MyNullableDate;
Ή τη μεγαλύτερη μορφή:
Nullable<DateTime> MyNullableDate;
Και, τέλος, υπάρχει ένας ενσωματωμένος τρόπος για να αναφέρετε την προεπιλογή οποιουδήποτε τύπου. Αυτό επιστρέφει null
για τύπους αναφοράς, αλλά για το παράδειγμά μας DateTime θα επιστρέψει το ίδιο με το DateTime.MinValue
:
default(DateTime)
Εάν χρησιμοποιείτε το .NET 2.0 (ή νεότερη έκδοση) μπορείτε να χρησιμοποιήσετε τον τύπο nullable:
DateTime? dt = null;
ή
Nullable<DateTime> dt = null;
αργότερα:
dt = new DateTime();
Και μπορείτε να ελέγξετε την τιμή με:
if (dt.HasValue)
{
// Do something with dt.Value
}
Ή μπορείτε να το χρησιμοποιήσετε όπως:
DateTime dt2 = dt ?? DateTime.MinValue;
Μπορείτε να διαβάσετε περισσότερα εδώ:
http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx