使用if语句缩短for循环 - C#

时间:2015-11-25 13:18:33

标签: c# if-statement for-loop

这是我目前的代码:

for(int i = 1; i < 13; i + 4)
{
   do something
}
for (int i = 2; i <13; i + 4)
{
   do something
}

依此类推i。

我希望我的for循环执行以下操作而不必写出每个单独的值:

for(int i = 1; i < 13; i++)
{
    if(i is 1,5,9)
    {
       do something
    }
    if(i is 2,6,10)
    {
       do something
    }

例如,更改文本框文本。

谢谢。

5 个答案:

答案 0 :(得分:3)

看看标准的共同点;他们都用4来模数相同的东西:

<person>@foo.com

另一种方法是在循环内增加:

for(int i = 1; i != 13; ++i)
{
  switch(i % 4)
  {
    case 1:
      // first do something
      break;
    case 2:
      // second do something
      break;
    case 3:
      // third do something
      break;
    case 0:
      // fourth do something
      break;
  }
}

如果你不能保证一定数量的循环,这种方法需要更加谨慎(例如你在这里很好,但如果你在for(int i = 1; i != 13; ++i) { // first do something ++i; // second do something ++i; // third do something ++i; // fourth do something } 结束,你需要在循环中进行测试。)< / p>

答案 1 :(得分:2)

或许您正在寻找除法余数运算符%以及switch语句,如下所示。

for(int i = 1; i < 13; i++)
{
    switch( i % 4 )
    {
        case 0:
            do stuff;
            break;
        case 1:
            do stuff;
            break;
        case 2:
            do stuff;
            break;
        case 3:
            do stuff;
            break;
    }
}

答案 2 :(得分:2)

您可以使用Contains

for(int i = 1; i < 13; i++)
{
    if(new[]{1,5,9}.Contains(i))
    {
       // do something
    }
    if(new[]{2,6,10}.Contains(i))
    {
       // do something else
    }
}

答案 3 :(得分:1)

这是一种简单的方法,不会让它更长......

for(int i = 1; i != 13; ++i)
{
    if ((i - 1) % 4 == 0)
    {
         //i is 1, 5, 9, etc.
    }
    else if ((i - 2) % 4 == 0)
    {
         //i is 2, 6, 10
    }
}

答案 4 :(得分:0)

我会做这样的事情:

int[] valuesForTheFirstIf = new int[] { 1, 5, 9 };
int[] valuesForTheSecondtIf = new int[] { 2, 6, 10 };

for (int i = 0; i < 13; i++)
{
    if (valuesForTheFirstIf.Contains(i))
    {
        // do something
    }
    if (valuesForTheSecondtIf.Contains(i))
    {
        // do something
    }
}