2010-11-23 118 views
36

虽然在一个开源项目中玩耍,但我试图通过编译器阻止DateTime对象。当我跳到定义,我看到这个:变量声明后面的一个问号是什么意思?

public DateTime? timestamp; 

可能有人请赐教我这是什么,以及为什么它可能有用吗?

+3

+1对于编译器来说,现在是一个被接受的动词。 – Joe 2014-05-21 16:35:58

回答

53

这是一个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 
} 
+0

你可以使用`??`而不是if/else否? – 2014-04-03 08:29:34

-1

它可为空的日期时间

5

这是Nullable<DateTime>一个快捷方式。值类型,如DateTime不能为空; Nullable<>包装值类型,以便您拥有包含HasValue属性和其他便利功能的对象。

8

?使得一个值类型(intboolDateTime,或任何其他structenum)经由System.Nullable<T>类型可为空的。 DateTime?表示变量为System.Nullable<DateTime>。您可以将DateTime或值null分配给该变量。要检查变量是否有值,请使用HasValue属性并获取实际值,请使用Value属性。

相关问题