对于循环"破碎"?包括"if bool = true"但我不会停在i <int for"else"?

Ger*_*ony 0 c# for-loop .net-4.0 visual-studio-2010

我遇到了一个我无法解决的奇怪问题,无论我尝试过什么.也许我只是忽略了一些基本因素,但我完全没有想法,所以我当然希望任何人都可以帮助我.

我有一个for循环,它无法正常工作.有趣的是,几乎相同的一个工作得很好.问题是,当i <int时它不​​会停止(显然),而是继续前进(当然)会在Array处抛出IndexOutOfBounds异常.我很难解释这个,我想我只是"让代码说话":[注意:我编辑了方法调用和其他东西 - 我可以保证 - 与问题无关,制作代码更可读]

for (int i = GeneralVars.intStartAtLine; i < (GeneralVars.intEndAtLine + 1); i++)
{
    for (int j = 0; j < 49; j++)
        a++;
    if (boolCheck == true)
    {
        for (int j = 0; j < 6; j++)
        {
            if (z[i].zahlen7[j].nummer != 0)
            {
                if ((z[i].zahlen7[j + 1].nummer - z[i].zahlen7[j].nummer) == 1)
                {
                    //dosomestuff
                }
            }
        }
        if (z[i].zahlen7[0].nummer != 0)
        {
            if (a == b)
            {
                //do some stuff
            }
        }
    }
    else
    {
        for (int j = 0; j < 5; i++)
            if ((z[i].zahlen[j + 1].nummer - z[i].zahlen[j].nummer) == 1)
            {
                //dosomestuff
            }
        if (a == b)
        {
           //dosomestuff
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,问题发生在else循环中,如前所述,确切地说,IndexOutOfBounds异常发生在这里

if ((z[i].zahlen[j + 1].nummer - z[i].zahlen[j].nummer) == 1)
Run Code Online (Sandbox Code Playgroud)

它发生的原因是,因为'我'这里是3417,虽然它不可能?我检查了各种断点的变量,Genervars.intEndAtLine总是3416.我<GeneralVars.intEndAtLine + 1应该永远不会达到3417,但确实如此.我还尝试通过添加行来进行简单的测试

if (i != 3417)
Run Code Online (Sandbox Code Playgroud)

在else-loop之前和之后,当它(无论出于什么原因)时它仍然进入它,i = 3417.

所以 - 好吧 - 我完全迷失在这里.提前感谢您提供的任何帮助.

最后注意:我是新来的,我不是母语为英语的人,所以万一我犯了大错,请原谅我:-)

Pab*_*buc 8

for (int j = 0; j < 5; i++) // are you sure you want to increase i here or should it be j?
{
...
}
Run Code Online (Sandbox Code Playgroud)

对于最后一次运行,我想我= = 3416,当你第二次进入这个循环时,我= = 3417你得到了例外.

编辑: 尝试使用常量而不是幻数.你的代码看起来会更清晰.