猿问

“集合已修改;可能无法执行枚举操作”的错误,是什么原因?

例如,使用foreach遍历时,不应该修改被遍历的集合,否则就报这个错误。
我能理解添加元素时会报错,但是为什么连删除也不允许?删除迭代器当前指向的元素又不会影响后面的遍历工作

慕桂英3389331
浏览 472回答 3
3回答

慕哥6287543

没那么困难,在集合后面ToArray就行

DIEA

使用foreach不能执行删除、修改,这是规定。你可以使用for循环遍历修改。如果你是删除的话,for循环 i 要从大到小,比如:for(int&nbsp;i=50;i>=0;i--){&nbsp;}而不是for(int&nbsp;i=0;i<=50;i++){&nbsp;}

回首忆惘然

无论是向集合中添加元素还是从集合中删除元素,都会导致集合内部的变化,特别是集合遍历器的变化。例如List<int>&nbsp;list&nbsp;=&nbsp;new&nbsp;List<int>{1,2,3,4,5};foreach(int&nbsp;x&nbsp;in&nbsp;list){&nbsp;&nbsp;&nbsp;&nbsp;list.Remove(x);&nbsp;&nbsp;//将引发异常:{"集合已修改;可能无法执行枚举操作。"}}
随时随地看视频慕课网APP
我要回答