For-Loops很奇怪

Nat*_*han 0 .net c# for-loop winforms

出于某种原因,在这个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!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*zKP 5

这(第二个循环):

for (int ii = 0;ii <= Program.StockList.Count - 1;i++)
Run Code Online (Sandbox Code Playgroud)

应该是这样的:

for (int ii = 0;ii <= Program.StockList.Count - 1;ii++)
Run Code Online (Sandbox Code Playgroud)

我确信在这里很难发现差异,所以毫不奇怪,你的代码更难.考虑使用j内部循环,并将代码分区为较小的函数以避免此类错误.

同样如下面的评论中的kenny所述,您可以用循环替换第二个foreach循环:

foreach (var stock in Program.StockList)
{
    if (Items[(i * 4) + 3] == stock.ID)
    {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Nathan你知道foreach迭代集合吗? (5认同)