日期:2014-05-17  浏览次数:20471 次

求教大师for循环问题
for (int i = 0; i < 8; i++)
  {  
  strbuilder.Append("<tr><td>" + arrayList[i] + "</td><td>" + arrayList[i++] + "</td><td>" + arrayList[i++] + "</td><td>" + arrayList[i++] + "</td></tr>");
  }
 return strbuilder;  


如果数组元素为1,2,3,4,5,6,7,8
返回的是1,1,2,3
5,5,6,7


求指教!!!谢谢

------解决方案--------------------
strbuilder.Append("<tr><td>" + arrayList[i] + "</td><td>" + arrayList[++i] + "</td><td>" + arrayList[++i] + "</td><td>" + arrayList[++i] + "</td></tr>");
------解决方案--------------------
应该要++i
------解决方案--------------------
LZ你,你arrayList[i++]取值的时候 i的值已经被你改变了,下一次循环的时候i的值会在这个基础上累加的,
你这样取值就可以看到变化
C# code


        for (int i = 0; i < 8; i++)
        {
            string a= arrayList[i].ToString();
            string b= arrayList[i++].ToString();
            string c= arrayList[i++].ToString();
            string d= arrayList[i++].ToString();
             ////////然后就是拼接
        }

------解决方案--------------------
请注意 i++ 和 ++i的区别在于 : 前者会先做操作,后自增; 后者是先自增,再做操作。
------解决方案--------------------
arraylist[i++],在表达式[i++]中,貌似是先取i的值,然后再++,于是stringbuilder中也就等同于arraylist[0],arraylist[0],arraylist[1],arraylist[2],此时第一次循环结束,其中最后一个arraylist[i++]之后i已变为3,在经过for中的i++后i已等于4,于是第二次循环所列的四个为arraylist[4],arraylist[4],arraylist[5],arraylist[6]第二次循环后i等于7,在经过for中的i++后i为8,循环结束。