为什么在向ListBox添加ArrayList元素时会出现空引用异常?

时间:2013-02-13 18:39:36

标签: c# arraylist listbox compact-framework windows-ce

此代码在注释行中以“空引用异常”爆炸:

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项添加到listBox。

为什么这有问题?

注意:我在调试器中使用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());

......但无济于事。

1 个答案:

答案 0 :(得分:1)

您似乎没有初始化listBoxCommandsSentlistBoxCommandsSent.Items。您可以添加

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

检查什么是null。