我在问当您尝试使用 foreach 循环迭代的对象为空时引发异常的原因是什么?
例如,以下代码会引发异常:
public void Test()
{
IEnumerable<int> numbers = null;
foreach (var number in numbers)
{
//Do stuff
}
}
现在修复很简单,只需在 foreach 循环之前检查 null 即可。
public void Test()
{
IEnumerable<int> numbers = null;
if (numbers != null)
{
foreach (var number in numbers)
{
//Do stuff
}
}
}
我的想法是,你可以用 foreach 循环做的所有事情,你可以只用一个常规的 for 循环来做,因此 foreach 循环基本上存在,因为它更方便编写和更易于阅读。重要的是写起来更方便。如果创建某些东西是为了方便,为什么不一路走下去,在这种情况下隐式地进行空检查。现在可能在某些情况下,如果集合为 null,您实际上希望引发异常,但是,我认为到目前为止,这些情况属于少数,它们应该是您需要明确并检查 null 的情况. 类似于以下内容:
public static void Test()
{
IEnumerable<int> numbers = null;
if (numbers == null)
throw new NullReferenceException();
foreach (var number in numbers)
{
//Do stuff
}
}