我有型DateTime?
斷言變量不是空
在功能我檢查它是null
並希望以後使用它,而總是要?.
每次調用的變量。在例如Kotlin IDE會識別這樣的檢查,並聲明變量不能在null
之後。有沒有辦法在C#中做到這一點?
DateTime? BFreigabe = getDateTime();
if (BFreigabe == null) return false;
TimeSpan span = BFreigabe - DateTime.Now;
//Shows Error because it.BFreigabe has the type DateTime?, even though it can't be null
編輯:
當使用
TimeSpan span = BFreigabe.Value - DateTime.Now;
,而不是它的工作原理在這種情況下因爲.Value
沒有nullsafety可言。但是,考慮到即使沒有空檢查也會編譯併產生錯誤,但一般問題依然存在。如何說服C#以前的可空變量不能再空?
編輯2
的可變作品鑄造日期時間。
TimeSpan span = (DateTime)BFreigabe - DateTime.Now;
仍然不如Kotlin那樣安全,但也足夠相似。
替換'時間跨度跨度= BFreigabe - DateTime.Now;''與時間跨度跨度= BFreigabe.Value - DateTime.Now;'' –
BFreigabe.Value - DateTime.Now'或'BFreigabe.GetValueOrDefault() - DateTime.Now' – DavidG
我不明白你的第一個** Edit **的含義,你在這個代碼之前檢查了'null',所以無論如何它不會爲空,但是當你使用'nullable'類型時你工作不正確寫'BFreigabe - DateTime.Now'。因此,當你檢查一個變量時,沒有什麼和nullsafety –