DateTime "null" τιμή

Έχω ψάξει πολύ, αλλά δεν μπόρεσα να βρω λύση. Πώς αντιμετωπίζετε ένα DateTime που θα πρέπει να μπορεί να περιέχει μια μη αρχικοποιημένη τιμή (ισοδύναμη με null); Έχω μια κλάση η οποία μπορεί να έχει μια τιμή της ιδιότητας DateTime ορισμένη ή όχι. Σκεφτόμουν να αρχικοποιήσω τον κάτοχο της ιδιότητας σε DateTime.MinValue, η οποία στη συνέχεια θα μπορούσε εύκολα να ελεγχθεί. Υποθέτω ότι αυτή είναι μια αρκετά συνηθισμένη ερώτηση, πώς το κάνετε αυτό;

Λύση

Για τα κανονικά DateTimes, αν δεν τα αρχικοποιήσετε καθόλου, τότε θα ταιριάζουν με το DateTime.MinValue, επειδή πρόκειται για τύπο τιμής και όχι για τύπο αναφοράς.

Μπορείτε επίσης να χρησιμοποιήσετε ένα nullable DateTime, όπως αυτό:

DateTime? MyNullableDate;

Ή τη μεγαλύτερη μορφή:

Nullable MyNullableDate;

Και, τέλος, υπάρχει ένας ενσωματωμένος τρόπος για να αναφέρετε την προεπιλογή οποιουδήποτε τύπου. Αυτό επιστρέφει null για τύπους αναφοράς, αλλά για το παράδειγμά μας DateTime θα επιστρέψει το ίδιο με το DateTime.MinValue:

default(DateTime)
Σχόλια (5)

Εάν χρησιμοποιείτε το .NET 2.0 (ή νεότερη έκδοση) μπορείτε να χρησιμοποιήσετε τον τύπο nullable:

DateTime? dt = null;

ή

Nullable 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

Σχόλια (6)

Θα σκεφτόμουν να χρησιμοποιήσω ένα nullable types.

DateTime? myDate αντί για DateTime myDate.

Σχόλια (0)