DateTime is a value-type (struct), where-as string is a reference-type (class etc). That is the key difference. A reference can always be null; a value can’t (unless it uses Nullable<T> – i.e. DateTime?), although it can be zero’d (DateTime.MinValue), which is often interpreted as the same thing as null (esp. in 1.1).