C#循环遍历数组

时间:2010-03-09 20:29:49

标签: c# arrays loops

我循环遍历一系列字符串,例如(1/12/1992苹果卡车12/10/10橙色自行车)。数组的长度总是可以被3整除。我需要遍历数组并抓住前3个项目(我要将它们插入到数据库中),然后抓住接下来的3个,依此类推,直到所有他们已经完成了。

//iterate the array
for (int i = 0; i < theData.Length; i++)
{
    //grab 3 items at a time and do db insert, continue until all items are gone. 'theData' will always be divisible by 3.
}

7 个答案:

答案 0 :(得分:23)

每一步只需将i增加3:

  Debug.Assert((theData.Length % 3) == 0);  // 'theData' will always be divisible by 3

  for (int i = 0; i < theData.Length; i += 3)
  {
       //grab 3 items at a time and do db insert, 
       // continue until all items are gone..
       string item1 = theData[i+0];
       string item2 = theData[i+1];
       string item3 = theData[i+2];
       // use the items
  }

要回答一些评论,theData.Length是3的倍数,因此无需检查theData.Length-2作为上限。这只会掩盖先决条件中的错误。

答案 1 :(得分:7)

i++是循环的标准用法,但不是唯一的方法。每次尝试增加3:

 for (int i = 0; i < theData.Length - 2; i+=3) 
    { 

        // use theData[i], theData[i+1], theData[i+2]

    } 

答案 2 :(得分:3)

不太难。只需将for循环的计数器每次迭代增加3,然后将索引器偏移以一次获得3个批次:

for(int i=0; i < theData.Length; i+=3)
{
    var item1 = theData[i];
    var item2 = theData[i+1];
    var item3 = theData[i+2];
}

如果数组的长度不是三的倍数,则需要用theData.Length - 2检查上限。

答案 3 :(得分:2)

你的for循环不需要只添加一个。你可以循环三次。

for(int i = 0; i < theData.Length; i+=3)
{
  string value1 = theData[i];
  string value2 = theData[i+1];
  string value3 = theData[i+2];
}

基本上,您只是使用索引来获取数组中的值。这里需要注意的一点是,我没有检查你是否超过阵列的末尾。确保你正在进行边界检查!

答案 4 :(得分:1)

这应该有效:

//iterate the array
for (int i = 0; i < theData.Length; i+=3)
{
    //grab 3 items at a time and do db insert, continue until all items are gone. 'theData' will always be divisible by 3.
    var a = theData[i];
    var b = theData[i + 1];
    var c = theData[i + 2];
}

我曾经一度为这个答案而投票。我很确定它与使用theData.Length作为上限有关。代码正常工作,因为问题表明数组保证是三的倍数。如果没有这个保证,你需要用data.Length - 2来检查上限。

答案 5 :(得分:1)

这是一个更通用的解决方案:

int increment = 3;
for(int i = 0; i < theData.Length; i += increment)
{
   for(int j = 0; j < increment; j++)
   {
      if(i+j < theData.Length) {
         //theData[i + j] for the current index
      }
   }

}

答案 6 :(得分:-1)

string[] friends = new string[4];
friends[0]= "ali";
friends[1]= "Mike";
friends[2]= "jan";
friends[3]= "hamid";

for (int i = 0; i < friends.Length; i++)
{
    Console.WriteLine(friends[i]);
}Console.ReadLine();