ReSharper: возможно ли исключение NullReferenceException с помощью Enumerator? - PullRequest
3 голосов
/ 10 мая 2011

ReSharper уведомляет меня о возможном System.NullReferenceException для следующего кода:

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

В частности, он подчеркивает:

edgeEnumerator.Current

Я не могу понять, при каких обстоятельствах может произойти исключение. Насколько я понимаю, внутренние операторы while -loops будут выполняться, только если MoveNext() может установить перечислитель для следующего элемента.

1 Ответ

5 голосов
/ 10 мая 2011

Следующий элемент может фактически быть нулевым.Например, следующий код:

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

все равно даст вам перечислитель для каждого элемента, но сам элемент имеет значение null.

...