I am reading a .Net book, and in one of the code examples there is a class definition with this field:
private DateTime? startdate
DateTime is a
struct, not a
class, you get a
DateTime object, not a reference, when you declare a field or variable of that type.
And, in the same way as an
int cannot be
null, so this
DateTime object can never be
null, because it's not a reference.
Adding the question mark turns it into a nullable type, which means that either it is a
DateTime object, or it is
DateTime? is syntactic sugar for
Nullable is itself a
It's a nullable DateTime.
? after a primitive type/structure indicates that it is the nullable version.
DateTime is a structure that can never be null. From MSDN:
The DateTime value type represents dates and times with values ranging from 12:00:00 midnight, January 1, 0001 Anno Domini, or A.D. (also known as Common Era, or C.E.) through 11:59:59 P.M., December 31, 9999 A.D. (C.E.)
DateTime? can be null however.