2010-11-23 208 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屬性。

相關問題