Ere*_*mez 7 c# nullreferenceexception c#-4.0
寻找一些最佳实践指导.假设我有一行代码如下:
Color color = someOrder.Customer.LastOrder.Product.Color;
Run Code Online (Sandbox Code Playgroud)
Customer,LastOrder,Product和Color可以null在正常条件下.但是,如果路径中的任何一个对象为null,我希望color为null; 为了避免空引用异常,我需要检查每个对象的空条件,例如
Color color = someOrder == null ||
someOrder.Customer == null ||
someOrder.Customer.LastOrder == null ||
someOrder.Customer.Product == null ?
null : someOrder.Customer.LastOrder.Product.Color;
Run Code Online (Sandbox Code Playgroud)
或者我可以这样做
Color color = null;
try {color = someOrder.Customer.LastOrder.Product.Color}
catch (NullReferenceException) {}
Run Code Online (Sandbox Code Playgroud)
第一种方法显然有效,但编码和更难阅读似乎更乏味.第二种方法稍微容易一点,但对此使用异常处理可能不是一个好主意.
是否有另一种检查空值的快捷方式,并在必要时将null指定为颜色?或者在使用这种嵌套引用时如何避免NullReferenceExceptions的任何想法?
Mar*_*ers 11
您正在寻找null-safe解除引用运算符.
Color color = someOrder?.Customer?.LastOrder?.Product?.Color;
Run Code Online (Sandbox Code Playgroud)
不幸的是C#不支持它.也许它会在稍后添加,但目前没有计划这样做.
有关
| 归档时间: |
|
| 查看次数: |
3534 次 |
| 最近记录: |