出于某种原因,在这个for循环中,我达到1,并导致index out of range
错误。 Items.Count
等于4,我使用断点检查了它,StockList.Count
也等于4.我似乎无法弄清楚为什么我会达到一个,任何想法?
for (int i = 0; i <= (Items.Count / 4) - 1; i++)
{
for (int ii = 0;ii <= Program.StockList.Count - 1;i++)
{
if (Items[(i * 4) + 3] == Program.StockList[ii].ID) //Crash here
{
MessageBox.Show(Program.StockList[ii].Name + " Match!");
}
}
}
答案 0 :(得分:5)
这(第二个循环):
for (int ii = 0;ii <= Program.StockList.Count - 1;i++)
应该是这样的:
for (int ii = 0;ii <= Program.StockList.Count - 1;ii++)
我确信这里很难发现差异,所以毫不奇怪,你的代码更难。考虑将j
用于内部循环,并将代码划分为更小的函数以避免此类错误。
同样如下面评论中的kenny所述,您可以使用foreach
循环替换第二个循环:
foreach (var stock in Program.StockList)
{
if (Items[(i * 4) + 3] == stock.ID)
{
//...
}
}