变量声明后的一个问号是什么意思?

时间:2010-11-23 23:50:50

标签: c# .net

在开源项目中玩游戏时,我对 ToString 一个DateTime对象的尝试被编译器阻止了。当我跳到定义时,我看到了这个:

public DateTime? timestamp;

有人可以告诉我这个叫什么以及它为什么有用?

4 个答案:

答案 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)

?通过{设置值类型(intboolDateTime或任何其他structenum)可以为空{1}}类型。 System.Nullable<T>表示变量为DateTime?。您可以为该变量分配System.Nullable<DateTime>或值DateTime。要检查变量是否具有值,请使用null属性并获取实际值,使用HasValue属性。

答案 2 :(得分:5)

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

答案 3 :(得分:-2)

它是可以为空的日期时间