2018-03-17

1.用foreach删除会报错,原因:

在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从需导致在foreach中删除元素会出现异常。

比如我们有{A B C D E F }这些元素, 假设当前D是满足条件的元素(i=3),我们遍历到i = 3将其移除,接着就轮到i = 4的元素

它是F而不是E,因为删除了D之后E就成为i=3的元素, 这样就跳过了E(i=3),假如E也是满足条件的元素,那这趟遍历只

删除了D而保留了E最后就得到一个错误的集合。

2.用for循环,可能少删除,原因:

假设第一项与第二项均符合条件,当i=1时,满足条件执行删除操作,会移除第一个元素,接着第二个元素会前移到第一个元素的位置,即游标1对应

的是第二个元素。接着遍历i=2,也就跳过第二个元素。

3.用for倒序遍历删除,正确方式:

for(inti=list.Count-1;i>=0;i--)
{
   if(list[i])
  {
    list.RemoveAt(i);
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 3月10日 常用命令命令 作用 备注ctrl + l或者clear 刷新屏幕 删除之前的命令行ctrl ...
    无艰不摧阅读 1,365评论 0 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,672评论 0 13
  • 阅读对人性格的影响是一个潜移默化的过程,你自己不一定能感受到这种变化,但它确实在发生。年轻时阅读的,往往价值不大,...
    小妇阿达阅读 838评论 2 1
  • 底层逻辑、自我效能、职业定位、竞争力(学习)、竞争力(输出)、关系协调、领导力和人生设计。而这些内容正是古典老师在...
    路小甲2017阅读 4,898评论 0 0
  • Five Words: 1. And if any teenagers pass by our driveway,...
    飞鸟逐溪阅读 3,012评论 0 0