C#循环[索引超出范围]

C#循环[索引超出范围],c#,C#,我有一个这样的环 int numberofelements=20; for(int i=0;i<numberofelements;i++) { if(i==numberofelements) { break; } if(i==i+1)) {

我有一个这样的环

int numberofelements=20;

for(int i=0;i<numberofelements;i++)
            {

                if(i==numberofelements)
                {
                    break;
                }

                if(i==i+1))
                {
                   //do some thing

                }else
                {
                  //do some thing else

                }

        }
int numberofelements=20;

对于(inti=0;i,似乎您认为循环对于20个元素是正确的

for(int i=0;i<numberofelements;i++)

由于我从不等于numberofelements,即20个元素,因此似乎您试图从一个包含少于20个元素的列表中获取一个元素,您将不得不显示更多代码,您在循环中使用i做什么

此外,您只需要else部分,因为其他部分永远不会为真:

i”不能等于“i+1”,并且将永远不会等于numberofelements,因为您的循环限制(i 您可以通过以下方式访问所有元素:

for (int i = 0; i < list.Count; i++) // Loop through List with for
{
   // do something with list[i]
}
for(int i=0;i
我认为部分问题在于第一个if语句永远不会被使用。for循环将在I等于numOfElements之前退出(除非在for循环中修改I)

所以你可以这样做:

if (i == (numOfElements - 1)) {
    // do something
    break;
}

这样就不会出现空指针错误。

为什么不执行以下操作:

for (int i = 0; i < numberofelements - 1; i++)
{
    // do something
}

// do something else with numberofelements - 1
for(int i=0;i
试试这个

  int numberofelements=20;

            for (int i = 0; i < numberofelements; i++)
            {

                if (i == numberofelements - 1)
                {
                    Console.WriteLine("last element" + i);
                    break;
                }
                else
                {

                    if (i == i + 1)
                    {
                        Console.WriteLine(i);

                    }
                    else
                    {
                        Console.WriteLine(i);
                    }
                }
}
int numberofelements=20;
for(int i=0;i
我认为
i==numberofelements-1
,也不会执行
i==numberofelements
,因为你循环
你就不能执行我使用的
i@DMan,但我有同样的问题,“i”不能等于“i+1”,确切地说是+1
  int numberofelements=20;

            for (int i = 0; i < numberofelements; i++)
            {

                if (i == numberofelements - 1)
                {
                    Console.WriteLine("last element" + i);
                    break;
                }
                else
                {

                    if (i == i + 1)
                    {
                        Console.WriteLine(i);

                    }
                    else
                    {
                        Console.WriteLine(i);
                    }
                }
}