为了账号安全,请及时绑定邮箱和手机立即绑定

集合已修改;枚举操作可能不在ArrayList中执行

集合已修改;枚举操作可能不在ArrayList中执行

C#
弑天下 2019-10-09 16:50:18
我正在尝试从中删除一个项目,但出现ArrayList此异常:Collection was modified; enumeration operation may not execute.有任何想法吗?
查看完整描述

3 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

您在期间要删除商品foreach,是吗?简单地说,你做不到。这里有一些常用选项:


使用List<T>并RemoveAll与谓语

按索引向后迭代,删除匹配项


for(int i = list.Count - 1; i >= 0; i--) {

    if({some test}) list.RemoveAt(i);

}

使用foreach,并将匹配项放入第二个列表中;现在枚举第二个列表,并从第一个列表中删除那些项目(如果您明白我的意思)


查看完整回答
反对 回复 2019-10-09
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

这是一个例子(对错别字表示抱歉)


var itemsToRemove = new ArrayList();  // should use generic List if you can


foreach (var item in originalArrayList) {

  if (...) {

    itemsToRemove.Add(item);

  }

}


foreach (var item in itemsToRemove) {

  originalArrayList.Remove(item);

}

或者,如果您使用的是3.5,Linq可使第一步变得容易:


itemsToRemove = originalArrayList

  .Where(item => ...)

  .ToArray();


foreach (var item in itemsToRemove) {

  originalArrayList.Remove(item);

}

将“ ...”替换为确定是否应删除项目的条件。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 473 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信