例如,如果我要调用以下内容:person.Head.Nose.Sniff()然后,如果我想安全起见,则必须执行以下操作:

if(person != null)
    if(person.Head != null)
        if(person.Head.Nose != null)
            person.Head.Nose.Sniff();

有没有更简单的表达该表达式的方法?

最佳答案


在C#6中,您可以使用null-conditional operator ?
代码示例
这是打包到方法中的原始代码,并假定Sniff()始终返回true:

    public bool PerformNullCheckVersion1(Person person)
    {
        if (person != null)
            if (person.Head != null)
                if (person.Head.Nose != null)
                    return person.Head.Nose.Sniff();
        return false;
    }
这是用C#6空条件运算符重写的代码:
    public bool PerformNullCheckVersion2(Person person)
    {
        return person?.Head?.Nose?.Sniff() ?? false;
    }
??null-coalescing operator,与您的问题无关。
有关完整的示例,请参见:
https://github.com/lernkurve/Stackoverflow-question-3701563

10-07 19:43
查看更多