在循环中获取每100个值

Dar*_*age 9 c# syntax for-loop

有没有办法让这个更清洁,而不是像我在这里所做的那样使用tempvalue?


更新代码有一个逻辑错误,并没有显示我正在做什么.这就是我正在做的事情:

var loopTempValue = noOfPackets / 100;
for(i=0; i < noOfPackets; i++)
{   
    \\DoStuff

    if (i == loopTempValue)
    {
         loopTempValue = loopTempValue + (noOfPackets / 100);
         UploadBackGroundWorker.ReportProgress(pross);
    }
}
Run Code Online (Sandbox Code Playgroud)

更新决赛

这就是它在反馈之后的固定方式.

if (i % (noOfPackets / 100) == 0 && i != 0)
{
     UploadBackGroundWorker.ReportProgress(pross);
}
Run Code Online (Sandbox Code Playgroud)

raR*_*aRa 22

if (i % 100 == 0 && i != 0) { //YOUR CODE }
Run Code Online (Sandbox Code Playgroud)

对于像这样的支票,Modulus非常棒.

更多关于模数的信息 - http://www.vias.org/cppcourse/chap04_01.html

更新:我添加&& i != 00为真的情况.

如果你想使用tempvalue而不是硬编码100,那么这将是一个解决方案:

if (i % tempvalue == 0 && i != 0) { //YOUR CODE }
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 5

你的意思是你希望在循环期间触发条件100次,即每36次迭代?(在原始代码中,每次都会使tempvalue加倍,因此在循环期间只会触发七次.)

您可以使用模运算符来检查它.这将触发每组36次迭代的最后一个条件:

for(i=0; i < 3600; i++) {
   \\DoStuff

   if(i % 36 == 35) {
      \\DoStuff
   }
}
Run Code Online (Sandbox Code Playgroud)