小编Loo*_*oki的帖子

断言变量不为空

我有一个类型的变量 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 安全,但足够相似。

c# kotlin

6
推荐指数
1
解决办法
2681
查看次数

标签 统计

c# ×1

kotlin ×1