ReSharper:枚举器可能出现 NullReferenceException?

发布于 2024-11-06 08:50:28 字数 424 浏览 5 评论 0原文

ReSharper 通知我以下代码可能出现 System.NullReferenceException

 IEnumerator<IEdgeData> edgeEnumerator = edgeData.GetEnumerator();
 while (edgeEnumerator.MoveNext())
 {
    ConvId fromConvId = edgeEnumerator.Current.From;
    ...
 }

具体来说,它强调:

edgeEnumerator.Current

我无法弄清楚在哪种情况下可能会发生异常。我的理解是,只有当 MoveNext() 可以在下一个元素上设置枚举器时,才会执行 while 循环内部语句。

ReSharper notifies me about a possible System.NullReferenceException for the following code:

 IEnumerator<IEdgeData> edgeEnumerator = edgeData.GetEnumerator();
 while (edgeEnumerator.MoveNext())
 {
    ConvId fromConvId = edgeEnumerator.Current.From;
    ...
 }

Specifically, it underlines:

edgeEnumerator.Current

I cannot figure out under which circumstances the exception could occur. My understanding is that the while-loops inner statements will only be executed if MoveNext() can set the enumerator on the next element.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

韬韬不绝 2024-11-13 08:50:28

下一个元素实际上可能为空。例如,以下代码:

new List<SampleClass> { null, null, null }

仍将为每个元素提供一个枚举器,但该元素本身为 null。

The next element could actually be null. For example, the following code:

new List<SampleClass> { null, null, null }

will still give you an enumerator for each element, but the element itself is null.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文