Почему я получаю это исключение NullReferenceException? - PullRequest
0 голосов
/ 08 декабря 2011

Я изучаю C # и у меня проблема с передачей ссылки.

double tmpNewEntry = -1;

for (int k = 0; k < pl2.Length; k++)
{
    p.countWithStepActivation(ref tmpNewEntry);
    // Console.WriteLine("answer = {0} | t = {1} | tmpNewEntry = {2}", p.answer, p.theta, tmpNewEntry);
    pl2[k].changeEntry(k, tmpNewEntry);
}

Теперь, когда я раскомментирую WriteLine(), я получаю правильный результат для tmpNewEntry, но в следующей строке:

pl2[k].changeEntry(k, tmpNewEntry); 

Я получаю NullReferenceException .Чего мне не хватает?

Ответы [ 3 ]

2 голосов
/ 08 декабря 2011

Ваша проблема

pl2[k].changeEntry(....

Вы уверены, что pl2[k] не равно NULL, будь то массив или элемент списка?

1 голос
/ 08 декабря 2011

Какое значение pl2[k], прежде чем вы получите ошибку? Могу поспорить, что это ноль.

Я предполагаю, что ссылка .changeEntry не имеет смысла для c #, потому что объект (pl2[k]) равен нулю.

0 голосов
/ 08 декабря 2011

Вы можете сделать:

double tmpNewEntry = -1;

for (int k = 0; k < pl2.Length; k++)
{
     p.countWithStepActivation(ref tmpNewEntry);
     // Console.WriteLine("answer = {0} | t = {1} | tmpNewEntry = {2}", p.answer, p.theta, tmpNewEntry);
     if(pl2[k] != null)
     {
         pl2[k].changeEntry(k, tmpNewEntry);
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...