вторник, 7 июня 2011 г.

C# Nullable DateTime

Последнее время, когда я учился получать данные из бд, меня часто мучал вопрос, почему извлеченная нулевая дата (в базе == NULL) таковой не является? И почему я не могу написать DateTime dt = null? Надо было проявить чуть интереса.


[SerializableAttribute]
public struct DateTime : IComparable, IFormattable, 
 IConvertible, ISerializable, IComparable<DateTime>, 
 IEquatable<DateTime>

Да, DateTime это, оказывается, структура. А структура это value type и не может быть null, ответ на поверхности.
А для проверки некорректности даты следует использовать

dt == DateTime.MinValue
// DateTime.MinValue = 00:00:00.0000000 January 01, 0001

Также, конечно, можно использовать Nullable<DateTime> = "DateTime?".

Маленькая статейка по теме:
Nullable DateTime