雖然在一個開源項目中玩耍,但我試圖通過編譯器阻止DateTime對象。當我跳到定義,我看到這個:變量聲明後面的一個問號是什麼意思?
public DateTime? timestamp;
可能有人請賜教我這是什麼,以及爲什麼它可能有用嗎?
雖然在一個開源項目中玩耍,但我試圖通過編譯器阻止DateTime對象。當我跳到定義,我看到這個:變量聲明後面的一個問號是什麼意思?
public DateTime? timestamp;
可能有人請賜教我這是什麼,以及爲什麼它可能有用嗎?
這是一個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
}
你可以使用`??`而不是if/else否? – 2014-04-03 08:29:34
它可爲空的日期時間
這是Nullable<DateTime>
一個快捷方式。值類型,如DateTime
不能爲空; Nullable<>
包裝值類型,以便您擁有包含HasValue
屬性和其他便利功能的對象。
?
使得一個值類型(int
,bool
,DateTime
,或任何其他struct
或enum
)經由System.Nullable<T>
類型可爲空的。 DateTime?
表示變量爲System.Nullable<DateTime>
。您可以將DateTime
或值null
分配給該變量。要檢查變量是否有值,請使用HasValue
屬性並獲取實際值,請使用Value
屬性。
+1對於編譯器來說,現在是一個被接受的動詞。 – Joe 2014-05-21 16:35:58