For-Loops being weird

本文关键字:weird being For-Loops | 更新日期: 2023-09-27 18:36:13

出于某种原因,在这个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!");
        }
    }
}

For-Loops being weird

这个(第二个循环):

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)
    {
        //...
    }
}