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)

i mod 1000 が 0 の場合 (1000、2000、3000 など)、i == 0 ではないことを意味します。

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

%剰余演算子で、除算の剰余を返します。剰余がゼロの場合は、1000 の倍数になります。ただし、0 は 1000 でも割り切れるので、0 を除外する必要があります。

于 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 に答える