在开源项目中玩游戏时,我对ToString一个DateTime对象的尝试被编译器阻止了.当我跳到定义时,我看到了这个:
public DateTime? timestamp;
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我这是什么以及为什么它可能有用?
Cam*_*ron 64
这是一个可以为空的类型.可空类型允许值类型(例如ints和结构,如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
}
Run Code Online (Sandbox Code Playgroud)
?使得一个值类型(int,bool,DateTime,或任何其他struct或enum)经由可空System.Nullable<T>类型.DateTime?意味着变量是a System.Nullable<DateTime>.您可以为该变量指定一个DateTime或值null.要检查变量是否具有值,请使用HasValue属性并获取实际值,请使用该Value属性.
这是一个捷径Nullable<DateTime>.值类型,如DateTime不能为null; Nullable<>包装值类型,以便您拥有具有HasValue属性和其他方便功能的对象.
| 归档时间: |
|
| 查看次数: |
40430 次 |
| 最近记录: |