我在循环中有一个if语句,使用Debug.Write()我已经确定,对于循环的第一次迭代,一切都按预期工作,但在后续迭代中,if块被忽略,但循环中的其他所有内容仍然执行.我尝试过一些变化,但到目前为止还没有一个变化.
原来我有:
Private int Loop()
{
int a = 50000;
int n = 0;
for (int n = 0; n < arrayListFromElsewhere.Count(); n++)
{
if ((int)arrayListFromElsewhere[n] < a)
{
Debug.WriteLine("if loop: " + n);
a = n;
}
Debug.WriteLine("N: " + n);
}
}
Run Code Online (Sandbox Code Playgroud)
哪个会打印:
if loop: 0
N: 0
N: 1
N: 2
etc...
Run Code Online (Sandbox Code Playgroud)
我已经验证了ArrayList只包含整数,用一段时间替换了for,并尝试将if移动到一个单独的函数中,该函数在for/while中调用,但到目前为止还没有任何工作.那么我忽略了什么超级显而易见的事情?
在循环的第一次迭代之后,您已设置a为n.从那时起,if如果值中的ArrayList值为负,则只会进入语句.是任何值的负?(失败的简短但完整的例子真的会帮助,顺便说一句-以及对你有什么解释的一些尝试.做)
(顺便说一句,为什么你仍然使用非泛型集合?2004年正在调用 - 它想要它的代码!)