什么是“DateTime?”而不仅仅是C#中的DateTime?

DateTime?区别DateTime? 和C#中的DateTime (没有问号)?

DateTime? 可以为null而不是DateTime

值类型后面的问号是Nullable结构的简写表示法。

表示一个对象,其基础类型是一个值类型,也可以像引用类型一样赋值为null。

Nullable结构允许您包装值类型(如DateTimeInt32Guid等),并在某些方面将它们视为引用类型。 它确实变得有点复杂(在赋值,提升运算符和其他东西方面),因此我建议你阅读Nullable Types(C#编程指南)及其相关文章。

可空类型是System.Nullable结构的实例。 可空类型可以表示其基础值类型的正常值范围,以及额外的空值。 例如,可以为发音为“Nullable of Int32”的Nullable分配从-2147483648到2147483647的任何值,或者可以为其分配空值。 Nullable可以赋值true或false,或者为null。 在处理包含可能未赋值的元素的数据库和其他数据类型时,将null分配给numeric和Boolean类型的能力特别有用。 例如,数据库中的布尔字段可以存储值true或false,或者可能未定义。

约会时间? 是另一种编写Nullable 的方法。 我建议您阅读本文以了解有关可空的更多信息:

可空(T)结构