Nullable value types introduce some complications into the .NET type
system. In its first release, C# and .NET did not support nullable
value types. Only reference types were nullable. A core principle for
a value type was that it always had valid contents; it was never null.
A nullable value type changes those rules. The concept of nullable
value types is simple: provide consistent semantics around the concept
of a null, or missing, value. The first mention of nullable value
types sums this up in the C# spec:

Complete article here at MSDN..

http://msdn.microsoft.com/en-us/vcsharp/hh124568