我正在学习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 。我错过了什么?
答案 0 :(得分:2)
你的问题是
pl2[k].changeEntry(....
你确定pl2[k]
不是NULL,不管是数组还是List元素?
答案 1 :(得分:1)
在收到错误之前,pl2[k]
的价值是多少?我打赌它是空的。
我的猜测是.changeEntry
引用对c#没有意义,因为对象(pl2[k]
)为空。
答案 2 :(得分:0)
你可以这样做:
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);
}
}