- 问题描述
写了一个递归函数,递归删除掉当前用户的所有下属,foreach执行到第二个循环是报错,错误信息如下:
- 报错原因:
- hashtable存值时候不是按照你存放顺序放的,所以当你用foreach遍历的时候,就不能保证遍历出来的顺序和你原来存放进去的顺序是一致的
- foreach 语句是对枚举数的包装,它只允许从集合中读取,不允许写入集合。也就是,不能在foreach里遍历的时侯把它的元素进行删除或增加的操作的
参考博文
-
解决办法
使用for语句进行循环,注意要使用倒序循环
否则删除了List数据以后,List.Count就发生了改变,逻辑出错 -
如果要删除的是List中的某一个值,可以使用foreach遍历,当找到该值以后,删除元素,并且break
foreach (var va in m_ltContainer) { if (va.ContainerInfo == _objContainer) { m_ltContainer.Remove(va); break; } }