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