寻找一些最佳实践指导。假设我有这样一行代码:
Color color = someOrder.Customer.LastOrder.Product.Color;
其中 Customer、LastOrder、Product 和 Color 可能null
处于正常条件下。但是,如果路径中的任何一个对象为空,我希望颜色为空;为了避免空引用异常,我需要检查每个对象的空条件,例如
Color color = someOrder == null ||
someOrder.Customer == null ||
someOrder.Customer.LastOrder == null ||
someOrder.Customer.Product == null ?
null : someOrder.Customer.LastOrder.Product.Color;
或者我可以这样做
Color color = null;
try {color = someOrder.Customer.LastOrder.Product.Color}
catch (NullReferenceException) {}
第一种方法显然有效,但编码似乎有点乏味且难以阅读。第二种方法更容易一些,但为此使用异常处理可能不是一个好主意。
是否有另一种检查空值并在必要时将空值分配给颜色的快捷方式?或者关于在使用此类嵌套引用时如何避免 NullReferenceExceptions 的任何想法?