在循环中获取每100个值

时间:2011-01-25 11:02:48

标签: c# for-loop syntax

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


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

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

    if (i == loopTempValue)
    {
         loopTempValue = loopTempValue + (noOfPackets / 100);
         UploadBackGroundWorker.ReportProgress(pross);
    }
}

更新最终

这就是它在反馈后如何修复的,那些家伙。

if (i % (noOfPackets / 100) == 0 && i != 0)
{
     UploadBackGroundWorker.ReportProgress(pross);
}

3 个答案:

答案 0 :(得分:21)

if (i % 100 == 0 && i != 0) { //YOUR CODE }

对于像这样的支票来说,模数非常棒。

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

更新:我添加&& i != 0为0的情况为真。

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

if (i % tempvalue == 0 && i != 0) { //YOUR CODE }

答案 1 :(得分:5)

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

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

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

   if(i % 36 == 35) {
      \\DoStuff
   }
}

答案 2 :(得分:1)

if( (i+1 % (tempvalue+1) == 0)
{
      //DoStuff

      //tempvaule = tempvalue + tempvalue;
}