例如,如果我要调用以下内容: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