我有一个类型的变量 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
Run Code Online (Sandbox Code Playgroud)
编辑:
使用时
TimeSpan span = BFreigabe.Value - DateTime.Now;
Run Code Online (Sandbox Code Playgroud)
相反,它在这种情况下有效,因为.Value根本没有 nullsafety。但是,考虑到即使没有空检查也会编译并且只会产生错误,一般问题仍然存在。如何说服 C# 以前的可空变量不再可以为空?
编辑 2
在变量上投射 DateTime 有效。
TimeSpan span = (DateTime)BFreigabe - DateTime.Now;
Run Code Online (Sandbox Code Playgroud)
仍然不如 Kotlin 安全,但足够相似。