2011-05-10 68 views
3

ReSharper的通知我關於一個可能System.NullReferenceException以下代碼:ReSharper:可能的NullReferenceException與枚舉器?

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

具體來說,它強調:

edgeEnumerator.Current 

我想不出在哪些情況下可能發生的異常。我的理解是while -loops內部語句只有在MoveNext()可以在下一個元素上設置枚舉數時纔會執行。

回答

5

下一個元素實際上可以爲null。例如,以下代碼:

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

仍然會爲您提供每個元素的枚舉數,但元素本身爲null。

+0

奇怪的是,如果我們使用'foreach',它不會強調任何內容。 – starteleport 2013-03-18 09:52:13