首页 > 解决方案 > 如何避免在 foreach 循环之前对关联/组合/聚合对象的层次结构进行许多空检查?

问题描述

在这种情况下检查空值的最佳方法是什么?

foreach(var item in Vehicles.Car.CarModel)
{
   ...
   ...
}

现在 Car 或 CarModel 可以为 Null 并且应该以某种方式进行检查。什么是最好的方法?

标签: c#

解决方案


您可以编写此代码以避免在循环之前的两行中进行一些空检查:

TypeOfCarModel items = Vehicles?.Car?.CarModel ?? null;

if ( items != null )
  foreach ( var item in items )
  {
  }

这使用Null 条件Null 合并运算符。

例如,在列表或任何其他类似的情况下,变体可能是:

List<CarModelItem> items = Vehicles?.Car?.CarModel ?? new List<CarModelItem>();

foreach ( var item in items )
{
}

它避免了空检查,因为“ IEnumerable”为空,但它创建了一个实例......


推荐阅读