C#中的DateTime?
和DateTime
(没有问号)有什么区别?
答案 0 :(得分:19)
值类型后面的问号是Nullable<T>
结构的简写符号。
表示其底层的对象 type是一个值类型,也可以是 像参考类型一样指定null。
Nullable<T>
结构允许您包装值类型(如DateTime
,Int32
,Guid
等),并在某些方面将它们视为引用类型。它确实变得有点复杂(在任务,提升操作员和其他事情方面),因此我建议您阅读Nullable Types (C# Programming Guide)及其相关文章。
Nullable类型是。的实例
System.Nullable
结构。可空的 type可以代表正常范围 其基础价值类型的值, 加上一个额外的空值。对于 例如,Nullable<Int32>
,发音为 可以分配“Intul的Int32” 任何值从-2147483648到 2147483647,或者可以分配它 空值。Nullable<bool>
可以是{{1}} 分配值true或false,或 空值。赋值为null的能力 数字和布尔类型是 处理时特别有用 数据库和其他数据类型 包含可能不是的元素 分配了一个值。例如,a 数据库中的布尔字段可以存储 值true或false,或者可能是 未定义。
答案 1 :(得分:17)
DateTime?
可以为null,而不是DateTime
答案 2 :(得分:2)
的DateTime?是另一种编写Nullable&lt; DateTime&gt;的方法。我建议您阅读本文以了解有关可空的更多信息: