2014-11-08 85 views
0

我正在從具有名爲Col1,Col2等節點的動態生成數的C#讀取XML文件。當我試圖在這些節點上運行while循環並檢查null我仍然得到一個NullReferenceException。任何人都可以建議如何處理這個以避免異常?儘管檢查爲NULL,但爲空引用異常

int col = 1; 
string colCount = col.ToString(); 
colCount = "Col" + colCount; 
while (nodes[0][colCount].InnerText != null) 
{ 
    timeToFillValues.Add(double.Parse(nodes[0][colCount].InnerText)); 
    col++; 
    colCount = "Col" + col.ToString(); 
} 
+0

是否將'timeToFillValues'初始化爲一個值?或者它是'空'? – dotnetom 2014-11-08 20:06:33

+0

timeToFillValues已初始化:var timeToFillValues = new列表(); 但是,NullReferenceException發生在while循環的開始處:while(nodes [0] [colCount] .InnerText!= null) – 2014-11-08 20:23:23

+0

您在哪裏得到異常?它是在循環內還是在循環中檢查條件? – dotnetom 2014-11-08 20:24:55

回答

0

既然你在註釋錯誤發生檢查狀況時,只有在那裏你應該得到一個錯誤少數病例中提到:調用while循環在你面前

if(nodes == null) 
{ 
    // was nodes not populated? Then populate it 
} 
if(nodes[0][colCount] == null) 
{ 
    // does element actually exist or is it null? 
} 

檢查這些條件應該找出導致問題的原因。

+0

謝謝dotnetom。看着你的解決方案,我意識到發生了異常,因爲我在一個不存在的對象上調用了InnerText方法。修改後的while循環:while(nodes [0] [colCount]!= null) – 2014-11-08 21:11:46