ReSharper:枚举器可能出现 NullReferenceException?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
下一个元素实际上可能为空。例如,以下代码:
仍将为每个元素提供一个枚举器,但该元素本身为 null。
The next element could actually be null. For example, the following code:
will still give you an enumerator for each element, but the element itself is null.