3

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

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

4

6 回答 6

16

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

if(i % 1000 == 0)
{
    //Do something
}
于 2012-07-17T08:26:51.087 回答
5
if (i != 0 && i % 1000 == 0)

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

于 2012-07-17T08:27:22.677 回答
4
if (i != 0 && i % 1000 == 0) {
  doSomethingElse();
}

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

于 2012-07-17T08:27:39.083 回答
2

使用模运算符:

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

会做你想做的。

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

于 2012-07-17T08:27:48.807 回答
2

真的在这里吹毛求疵,并可能回答一匹死马,但是这样做:

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

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

于 2012-07-17T08:45:05.973 回答
1

使用运算符% http://msdn.microsoft.com/en-us/library/6a71f45d.aspx

于 2012-07-17T08:28:07.720 回答