Цикл Foreach вызывает исключение NullReferenceException - PullRequest
1 голос
/ 06 октября 2011

В верхней части моего кода (до конструктора) я пишу: String[] CAN = null;

Этот массив строк обновляется в другой функции.

Позже в моем коде у меня есть цикл foreach:

foreach (String str in CAN)
{
    if(str.Contains("18FA07FE"))
        cmdResult = true;
    else
        cmdResult = false;
}

Я попытался отладить, и в строке оператора foreach я вижу, что массив строк CAN успешно обновлен и теперь содержит 1211 элементов.

Итак, яна самом деле не знаю, почему оно дает мне это исключение.

Ответы [ 3 ]

4 голосов
/ 06 октября 2011

Если проблема связана только с кодом, который вы показали, и с кодом, который вы описали, и верно, что массив имеет элементы, то единственное возможное объяснение состоит в том, что один из элементов в CANпустой элемент, и, следовательно, не исключение foreach вызывает исключение, а строка:

if (str.Contains(...))
    ^^^
     |
     +-- null
2 голосов
/ 06 октября 2011

Возможно, одно из строковых значений является нулевым

string [] CAN =  { "first", "second", null, "fourth" };

            foreach ( string str in CAN ) {
                if ( str.Contains( "fourth" ) ) {
                    Console.WriteLine( "Success" );
                }
            }
0 голосов
/ 06 октября 2011

Где взять NullPointer?Это цикл или если?Я предполагаю, что ваш массив содержит нулевой элемент, который выбрасывает этот NPE.

...