variables声明之后的一个问号是什么意思?
虽然在一个开源项目中玩耍,但我试图ToString一个DateTime对象被编译器阻止。 当我跳到这个定义时,我看到了这个:
public DateTime? timestamp;
可能有人请赐教我这是什么,为什么它可能是有用的?
这是一个可以空的types 。 可为空的types允许值types (例如int
和像DateTime这样的结构)包含null。
这个?
是Nullable<DateTime>
语法糖,因为它经常被使用。
调用ToString()
:
if (timstamp.HasValue) { // ie is not null return timestamp.Value.ToString(); } else { return "<unknown>"; // Or do whatever else that makes sense in your context }
?
通过System.Nullable<T>
types使值types( int
, bool
, DateTime
或任何其他struct
或enum
)可以为空。 DateTime?
意味着该variables是一个System.Nullable<DateTime>
。 您可以将DateTime
或值null
分配给该variables。 要检查variables是否有值,请使用HasValue
属性并获取实际值,请使用Value
属性。
这是Nullable<DateTime>
的快捷方式。 值types,如DateTime
不能为null; Nullable<>
封装值types,以便您拥有一个具有HasValue
属性和其他方便function的对象。
它是可以空的datetime