2014-11-08 6 views
0

Я читаю из XML-файла с C#, который имеет динамически генерируемое количество узлов с именем Col1, Col2 и т. Д. Когда я пытаюсь запустить цикл while на этих узлах и проверять значение null Я все еще получаю исключение NullReferenceException. Может ли кто-нибудь предложить, как справиться с этим, чтобы избежать исключения?Исключение Null Reference, несмотря на проверку 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

+0

timeToFillValues ​​инициализируется: var timeToFillValues ​​= новый Список (); Но исключение NullReferenceException происходит в начале цикла while: while (узлы [0] [colCount] .InnerText! = Null) –

+0

И где вы получаете исключение? Это внутри цикла или при проверке состояния в цикле? – dotnetom

ответ

0

Поскольку вы упомянули в комментарии происходит ошибка при проверке состояния, есть только несколько случаев, когда вы должны получить сообщение об ошибке:

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 (узлы [0] [colCount]! = Null) –

Смежные вопросы