5

ReSharper 通知我System.NullReferenceException以下代码的可能:

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

具体来说,它强调:

edgeEnumerator.Current

我不知道在什么情况下会发生异常。我的理解是,只有在可以在下一个元素上设置枚举器的情况下,while才会执行 -loops 内部语句。MoveNext()

4

1 回答 1

6

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

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

仍然会为每个元素提供一个枚举器,但元素本身为空。

于 2011-05-10T14:35:48.217 回答