Why You’d Want to Store a Null Value in a Variable

The Nullable<T> type lets us make any value type nullable.  But why is this useful?  When might we want to store a null value in a type, in addition to the normal range of values?
It’s often useful to represent the fact that a variable doesn’t have a value.
For example, assume that we have a class that stores some information about a book that we have read.  We might have a DateStarted and a DateFinished field:
1
2
DateTime DateStarted;
DateTime DateFinished;
If we want to be able to store information representing a book that has been started, but not yet finished, we’d want to store a value for DateStarted, but no value for DateFinished.  With a normal DateTime value, we couldn’t do this.  Instead, we make both fields nullable, allowing us to store a null value for either.


1
2
DateTime? DateStarted;
DateTime? DateFinished;