在开源项目中玩游戏时,我对 ToString 一个DateTime对象的尝试被编译器阻止了。当我跳到定义时,我看到了这个:
public DateTime? timestamp;
有人可以告诉我这个叫什么以及它为什么有用?
答案 0 :(得分:63)
这是nullable type。 Nullable类型允许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
}
答案 1 :(得分:8)
?
通过{设置值类型(int
,bool
,DateTime
或任何其他struct
或enum
)可以为空{1}}类型。 System.Nullable<T>
表示变量为DateTime?
。您可以为该变量分配System.Nullable<DateTime>
或值DateTime
。要检查变量是否具有值,请使用null
属性并获取实际值,使用HasValue
属性。
答案 2 :(得分:5)
这是Nullable<DateTime>
的快捷方式。像DateTime
这样的值类型不能为null; Nullable<>
包装值类型,以便您拥有一个具有HasValue
属性和其他方便功能的对象。
答案 3 :(得分:-2)
它是可以为空的日期时间