提问人:user2217057 提问时间:2/28/2023 最后编辑:user2217057 更新时间:2/28/2023 访问量:27
对收到“无法对空引用异常执行运行时绑定”感到困惑
Puzzled with getting "Cannot perform runtime binding on a null reference exception"
问:
这似乎是一个简单的代码块,我相信我理解“无法对 null 引用异常执行运行时绑定”的含义,但我无法弄清楚为什么我会得到它。在到达抛出异常的这一行之前,我似乎正在检查所有内容:
for (int a = 0; a < (ItemList[i].Count - BufferSize); a++)
ItemList 是列表的动态列表(或二维列表)
List<dynamic> ItemList = new List<dynamic>();
int BufferSize = 35;
在此之后,一些代码填充了 ItemList 然后是有问题的块
for (var i = 0; i < ItemList.Count; i++)
{
if (ItemList[i] != null)
{
if (ItemList[i].Count > BufferSize)
{
// this line throws exception
for (int a = 0; a < (ItemList[i].Count - BufferSize); a++)
{
ItemList[i][a].Image = null;
}
}
}
}
答:
0赞
jgauffin
2/28/2023
#1
在该代码中唯一可以为 null 的是第二个数组中的元素 'ItemList[i][a]'。
您可能希望减少嵌套,以使代码更易于阅读。
for (var i = 0; i < ItemList.Count; i++)
{
if (ItemList[i] == null || ItemList[i].Count <= BufferSize)
{
continue;
}
for (int a = 0; a < (ItemList[i].Count - BufferSize); a++)
{
ItemList[i][a].Image = null;
}
}
评论
0赞
user2217057
2/28/2023
是的,但异常似乎在到达 ItemList[i][a] 之前就被抛出
评论