i++和i--的分析和运用
2015-05-28 22:40
162 查看
在我们执行for循环的时候,总是会用到i++,i--,可是用的时候却发现有时候如果是简单的利用循环去查询一些数据,就没有问题,可是如果不是的话,那么我们的问题就来了,
加入dataGridView中有6条数据,那么看一下下边的这个循环执行后的结果。
上边我本想删除选中行,但是如果我要删除的话,每次都是删除一半,原因如下。
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<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行
这样我们再进行添加和删除的时候就没有问题了。
加入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行
这样我们再进行添加和删除的时候就没有问题了。
相关文章推荐
- 对C++中迭代器的认识
- 浮点数在计算机内存中的存储方式
- android 涂鸦(清屏,画笔,粗细,保存)以及canvas源码学习
- 场景调研
- Chrome 控制台console的用法(学了之后对于调试js可是大大有用的哦)
- codeforces 185a(矩阵快速幂)
- 清除浮动的几种方法
- Datagridview合并单元格
- iOS学习之--------------使用系统方法检测网络情况
- 剑指offer-找工作必看的书
- UltraEdit乱码无解,另辟蹊径
- ITOO3.0考评-项目组长有感
- hdu1151 Air Raid
- asp.net Identity2 角色(Role)的使用(二)角色管理,角色控制器和视图
- tomcat 安装与配置
- 15HD_OJ——The Last Practice
- Hadoop之——Partitioner编程
- 安卓真机抓包方法
- php5 non-thread-safe和thread-safe这两个版本有何区别?
- int变量在最新xcode出现的问题