I'm no good with titles, methinks. But bear with me: I know why reference types in themselves cannot be declared const - they must be fully evaluable at compile time. Therefore, the only possible values for constants of reference types are string and a null reference.
So it makes sense that
const DateTime x = some date
DateTime d1 = default(DateTime)
const DateTime d1 = default(DateTime)
Have a look at the msdn article on optional parameters. When the data type is a value type (enum, struct) you may initiate an optional parameter with an empty constructor:
static void Foo(string s, DateTime opt = new DateTime())
Or with the default keyword. This isn't true for reference types.