4

DateTime?C# 中的 a和 a DateTime(不带问号)有什么区别?

4

3 回答 3

19

值类型后面的问号是Nullable<T>结构的简写符号。

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

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

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

于 2009-07-28T11:17:38.533 回答
17

DateTime?可以为空,而不是DateTime

于 2009-07-28T11:16:21.187 回答
2

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

可空(T)结构

于 2009-07-28T11:25:28.797 回答