null条件运算符和!=



随着C#中的null条件运算符的引入,用于以下评估,

if (instance != null && instance.Val != 0)

如果我以这种方式重写,

if (instance?.Val != 0)  

如果实例为null引用;它的行为像

if (instance == null || instance.Val != 0)

那么,使用此新语法重写评估的正确方法是什么?

编辑:

instance是一个大对象的字段,它可以从JSON中进行。有很多这样的代码,首先检查字段是否在JSON中,如果是的,请检查Val属性是否不等于常数,仅两个条件是正确的,都可以进行一些操作。

可以重构代码本身,以使逻辑流更加"有意义",如彼得在他的评论中所指示的那样,尽管在这个问题中,我对如何将null-conditional operators!=一起使用感兴趣。

带有null条件运算符返回的值始终为null

if ((instance?.Val ?? 0) != 0)

如果实例为null,则实例?。因此,您应该始终在与任何内容进行比较之前始终检查nulls:

if ((instance?.Val ?? 0) != 0)

这意味着:如果是实例?。接下来将此值与0比较(不等于(。

您可以使用null coallescing操作员:

instance?.Val ?? 0

instance为null或instance不是null而不是null,而是Val,上述表达式将评估为0。否则,Val的值将返回。

if ((instance?.Val).GetValueOrDefault() != 0)  

?有条件的操作员将自动将.VAL属性视为无效的。

相关内容

  • 没有找到相关文章

最新更新