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

时间:2009-07-28 11:14:58

标签: c# datetime nullable

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

3 个答案:

答案 0 :(得分:19)

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

  

表示其底层的对象   type是一个值类型,也可以是   像参考类型一样指定null。

Nullable<T>结构允许您包装值类型(如DateTimeInt32Guid等),并在某些方面将它们视为引用类型。它确实变得有点复杂(在任务,提升操作员和其他事情方面),因此我建议您阅读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;的方法。我建议您阅读本文以了解有关可空的更多信息:

Nullable(T) Structure