0

此代码在带有“Null Reference Exception”的注释行上爆炸:

MessageBox.Show(string.Format("arrLst count is {0}", arrLst.Count));
for (int i = 0; i < arrLst.Count; i++)
{
    MessageBox.Show("Made it into for loop"); 
    listBoxCommandsSent.Items.Add(arrLst[i]); // <-- blows up here
    MessageBox.Show("Made it past first listBoxCommandsSent.Items.Add()");
    . . .

arrLst 是一个 ArrayList

第一个 MessageBox.Show 告诉我 arrLst 的计数为 8 第二个 MessageBox.Show 已达到(“使其进入 for 循环”)第三个 MessageBox.Show 未达到;所以,问题是将项目 0 添加到列表框中。

为什么这是有问题的?

注意:我使用 MessageBox.Show() 在调试器中单步执行它的原因在 SO 的其他地方都有记录;在一个疯狂的地狱中,我无法从 VS 2003 的 XP 模式中连接到我的手持设备。

更新

甚至添加这些:

MessageBox.Show(string.Format("arrLst element 0 is {0}", arrLst[0].ToString()));
MessageBox.Show(string.Format("arrLst element 0 from i is {0}", arrLst[i].ToString()));

...告诉我我的期望(在这两种情况下,正如预期的那样):

arrLst element 0 is ! 0 200 200 210 1
arrLst element 0 from i is ! 0 200 200 210 1

我还在作业中添加了一个“ToString”,所以它现在是:

listBoxCommandsSent.Items.Add(arrLst[i].ToString());

……但无济于事。

4

1 回答 1

1

看来您没有初始化listBoxCommandsSentlistBoxCommandsSent.Items。您可以添加

if(listBoxCommandsSent==null)
    MessageBox.Show("listBoxCommandsSent is null");
if(listBoxCommandsSent.Items==null)
    MessageBox.Show("Items is null");

检查什么是空的。

于 2013-02-13T18:47:06.390 回答