【发布时间】:2012-05-08 20:45:35
【问题描述】:
寻找一些最佳实践指导。假设我有这样一行代码:
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 有任何想法?
【问题讨论】:
-
@MarkByers 是的,感谢其他问题的参考。
标签: c# c#-4.0 nullreferenceexception