0

出于某种原因,在这个 for 循环中,i 达到 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!");
        }
    }
}
4

1 回答 1

5

这(第二个循环):

for (int ii = 0;ii <= Program.StockList.Count - 1;i++)

应该是这样的:

for (int ii = 0;ii <= Program.StockList.Count - 1;ii++)

我敢肯定在这里很难发现差异,所以毫不奇怪它在您的代码中更加困难。考虑使用jfor 内部循环,并将代码划分为更小的函数以避免此类错误。

正如kenny在下面的评论中所指出的,您可以用循环替换第二个foreach循环:

foreach (var stock in Program.StockList)
{
    if (Items[(i * 4) + 3] == stock.ID)
    {
        //...
    }
}
于 2013-10-19T14:26:23.227 回答