2009-07-28 51 views

回答

17

DateTime?可以为空,而不是DateTime

+0

即可空 - http://msdn.microsoft.com/en-us/library/1t3y8s4s(VS.80).aspx – 2009-07-28 11:17:50

+2

其实, 'DateTime?'本身不是null,因为它也是一个值类型。 'Nullable '暴露了'HasValue'属性,编译器使用它来伪装一个值为'Nullable '的值类型的引用类型语义。 – 2009-07-28 11:41:29

19

问号之后的值类型是用于Nullable<T>结构的简化符号。

表示一个对象,其底层 类型为值类型也可以是 像引用类型分配空值。

Nullable<T>结构允许您将值类型(如DateTimeInt32Guid,等)并将其看作在某些方面引用类型。它确实有点复杂(在任务,解除操作员和其他方面),因此我建议您阅读Nullable Types (C# Programming Guide)及其相关文章。

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

2

DateTime?是另一种写可空的方式<DateTime>。我建议你阅读这更多地了解可空:

Nullable(T) Structure

相关问题