虽然在一个开源项目中玩耍,但我试图通过编译器阻止DateTime对象。当我跳到定义,我看到这个:变量声明后面的一个问号是什么意思?
public DateTime? timestamp;
可能有人请赐教我这是什么,以及为什么它可能有用吗?
虽然在一个开源项目中玩耍,但我试图通过编译器阻止DateTime对象。当我跳到定义,我看到这个:变量声明后面的一个问号是什么意思?
public DateTime? timestamp;
可能有人请赐教我这是什么,以及为什么它可能有用吗?
这是一个nullable type。可空类型允许value types(例如int
和像DateTime这样的结构)包含null。
?
是Nullable<DateTime>
的语法糖,因为它经常使用。
要调用ToString()
:
if (timstamp.HasValue) { // i.e. is not null
return timestamp.Value.ToString();
}
else {
return "<unknown>"; // Or do whatever else that makes sense in your context
}
你可以使用`??`而不是if/else否? – 2014-04-03 08:29:34
它可为空的日期时间
这是Nullable<DateTime>
一个快捷方式。值类型,如DateTime
不能为空; Nullable<>
包装值类型,以便您拥有包含HasValue
属性和其他便利功能的对象。
?
使得一个值类型(int
,bool
,DateTime
,或任何其他struct
或enum
)经由System.Nullable<T>
类型可为空的。 DateTime?
表示变量为System.Nullable<DateTime>
。您可以将DateTime
或值null
分配给该变量。要检查变量是否有值,请使用HasValue
属性并获取实际值,请使用Value
属性。
+1对于编译器来说,现在是一个被接受的动词。 – Joe 2014-05-21 16:35:58