您的位置:首页 > 其它

i++和i--的分析和运用

2015-05-28 22:40 162 查看
在我们执行for循环的时候,总是会用到i++,i--,可是用的时候却发现有时候如果是简单的利用循环去查询一些数据,就没有问题,可是如果不是的话,那么我们的问题就来了,
加入dataGridView中有6条数据,那么看一下下边的这个循环执行后的结果。

//根据部产品标识码,产品序列号来修改接收状态
  for (int i = 0; i < dt.Rows.Count; i++)
  {
     string ck = this.DGVOutBogie.Rows[i].Cells["Choice"].EditedFormattedValue.ToString();
      if (ck == "True")
      {
            dt.Rows.RemoveAt(i);
       }
}


上边我本想删除选中行,但是如果我要删除的话,每次都是删除一半,原因如下。

dt.Rows.RemoveAt(i);每次执行的时候dt.Rows.Count就会说少一行,最开始是6行,但是,也就是第一次执行的时候是
一 第一次:for(int i=0; i<6; i++){ dt.Rows.RemoveAt(0);}dt中还有5行
二 第二次:for(int i=1; i<5; i++){ dt.Rows.RemoveAt(0);} dt中还有4行
三 第三次:for(int i=2; i<4; i++){ dt.Rows.RemoveAt(0);}dt中还有3行
四 第四次:for(int i=3; i<3; i++){ dt.Rows.RemoveAt(0);}停止循环
所以才有了我上边说的不能随便循环的道理。
那么我该怎么办呢,我们看看下边这个方法可以吗
for (int i = 0; i < dt.Rows.Count; i++)
  {
     string ck = this.DGVOutBogie.Rows[i].Cells["Choice"].EditedFormattedValue.ToString();
      if (ck == "True")
      {
            dt.Rows.RemoveAt(i);
	         i--;//重点
       }
}

第一次:for(int i=0; i<6; i++){ dt.Rows.RemoveAt(0);i--} dt中还有5行
第二次:for(int i=0; i<5; i++){ dt.Rows.RemoveAt(0); i--} dt中还有4行
第三次:for(int i=0; i<4; i++){ dt.Rows.RemoveAt(0); i--}dt中还有3行
第四次:for(int i=0; i<3; i++){ dt.Rows.RemoveAt(0); i--}dt中还有2行
第五次:for(int i=0; i<2; i++){ dt.Rows.RemoveAt(0); i--}dt中还有1行
第六次:for(int i=0; i<1; i++){ dt.Rows.RemoveAt(0); i--} dt中还有0行
这样我们再进行添加和删除的时候就没有问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: