For-Statement,每1000次演练,做点什么

我正在穿过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 } } 

完成这项任务最有效的方法是什么?

尝试使用模运算符。 不确定C#语法,但是类似于:

 if(i % 1000 == 0) { //Do something } 
 if (i != 0 && i % 1000 == 0) 

这意味着如果i mod 1000为0(所以1000,2000,3000,…),但不是i == 0

 if (i != 0 && i % 1000 == 0) { doSomethingElse(); } 

%是模数运算符,返回除法运算的余数。 如果余数为零,那么你有1000的倍数。但是你需要特别排除0,因为0也可以被1000整除。

使用模运算符:

 if (i % 1000 == 0) { // do something... 

会做你想做的。

它除以给定的参数(在本例中为1000)并给出余数。 在这种情况下,您对0的余数感兴趣。请参阅此处的模运算符的doc

真的在这里挑剔,并可能回答死马,但这样做:

 if(i%1000 == 999) ... 

而不是比较0并避免第一次迭代。