我正在穿过Forloop 100'000次。 (这个数字可以多样化)
每1000次我想做一些特别的事情,我在其他演练中不做的事情。
类似的东西:
for (int i = 0; i < 100000; i++)
{
doTasks(); //Normal
if(i == 1000 || i == 2000 || i == 3000 || i == 4000 ) //and so on...
{
doSomethingElse(); //Special, For every 1000th walkthrough
}
}
完成该任务的最有效方法是什么?
答案 0 :(得分:12)
尝试使用模运算符。不确定C#语法,但是类似于:
if(i % 1000 == 0)
{
//Do something
}
答案 1 :(得分:5)
if (i != 0 && i % 1000 == 0)
这意味着如果i mod 1000为0(所以1000,2000,3000,...)但不是i == 0
答案 2 :(得分:4)
if (i != 0 && i % 1000 == 0) {
doSomethingElse();
}
%
是模数运算符,返回除法运算的余数。如果余数为零,那么你有1000的倍数。但是你需要排除0,因为0也可以被1000整除。
答案 3 :(得分:2)
使用模运算符:
if (i % 1000 == 0) {
// do something...
会做你想要的。
它除以给定的参数(在本例中为1000)并给出余数。在这种情况下,您对0的余数感兴趣。请参阅模运算符的文档here
答案 4 :(得分:2)
我真的在这里挑剔,并可能回答死马,但这样做:
if(i%1000 == 999) ...
而不是比较0并避免第一次迭代。
答案 5 :(得分:1)