此循环后C#代码中断

时间:2017-05-18 08:25:44

标签: c# for-loop break

我有以下这个循环:

string[] sfind = new string[Globais.dep.Length];
int udt = 0;
for (int getnum = 0; getnum <= Globais.dep.Length; getnum++)
{
    if (Globais.dep[getnum].Contains(items[1]))
    {
        sfind[udt] = Globais.dep[getnum];
        udt ++;
    }
}

我有更多的代码遵循这个循环,但是我用调试器观察它并且它没有运行下面的代码,在for循环结束后它会破坏整个代码。我在这做错了什么?我不知道这个循环的问题是什么。

无论如何,谢谢!

2 个答案:

答案 0 :(得分:8)

列表或数组索引器从0开始,以长度-1结束,但您使用getnum <= Globais.dep.Length,使用<代替<=

for (int getnum = 0; getnum < Globais.dep.Length; getnum++)
{
  // ...
}

旁注:您的代码导致了IndexOutOfRangeException您已经注意到了,那么您应该在问题中提到它,或者不是,然后有些东西像空try...catch一样隐藏它通常是一个坏主意。

答案 1 :(得分:1)

我想,您可以使用下面的foreach循环

if(Globais.dep.Length > 0)
{
  string[] sfind = new string[Globais.dep.Length];
  foreach (string str in Globais.dep)
     {
        if (str.Contains(items[1]))
        {
           sfind[str]
        }
     }
}