for循环之删除注意细节

前面说过用循环的地方尽量用foreach循环,既简洁又高效。可是删除的时候用foreach会出错,因此我们必须使用for循环来进行操作。 我写了下面一个测试demo,具体界面如下: for   第一个图是删除前的,第二个图是删除后的,具体的删除代码如下: for (int i = 0; i < lsvShow.Items.Count; i++) { lsvShow.Items.Remove(lsvShow.Items[i]); } 经过仔细分析,我发现我们删除的时候lsvShow.Count减小一个,删除了一个吗,但是i的值却一直再循环,所以就会导致lsvShow的item中的index出现变化,因此逐渐减小。 换个方式:如果lshow.item.count是固定值10的话,那么在上面删除时会报异常。因此我们应该删除时把i的值减少1;变成如下代码: if (lsvShow.Items.Count!=0) { for (int i = 0; i < lsvShow.Items.Count; i++) { lsvShow.Items.Remove(lsvShow.Items[i]); i--; } } 这样我们就可以清空我们所有的数据了。
posted @ 2013-03-08 14:03  娴言娴语  阅读(357)  评论(0编辑  收藏  举报