我有以下这个循环:
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循环结束后它会破坏整个代码。我在这做错了什么?我不知道这个循环的问题是什么。
无论如何,谢谢!
答案 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]
}
}
}