相关疑难解决方法(0)

当collection为null时,为什么.NET foreach循环抛出NullRefException?

所以我经常遇到这种情况... Do.Something(...)返回一个null集合,如下所示:

int[] returnArray = Do.Something(...);
Run Code Online (Sandbox Code Playgroud)

然后,我试着像这样使用这个集合:

foreach (int i in returnArray)
{
    // do some more stuff
}
Run Code Online (Sandbox Code Playgroud)

我只是好奇,为什么foreach循环不能对null集合进行操作?对我来说似乎合乎逻辑的是,0迭代将使用null集合执行...而是抛出一个NullReferenceException.任何人都知道为什么会这样?

这很烦人,因为我正在处理那些不确定它们返回的API,所以我最终if (someCollection != null)到处都是......

编辑:谢谢大家解释foreach使用GetEnumerator,如果没有枚举器,foreach会失败.我想我问为什么语言/运行时在抓取枚举器之前不能或不会进行空检查.在我看来,这种行为仍然会得到很好的定义.

.net c#

218
推荐指数
7
解决办法
11万
查看次数

标签 统计

.net ×1

c# ×1