当前位置: 代码迷 >> ASP.NET >> 求教大师for循环有关问题
  详细解决方案

求教大师for循环有关问题

热度:5889   发布时间:2013-02-25 00:00:00.0
求教大师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,循环结束。
  相关解决方案