错误 Collection was modified; enumeration operation may not execute

翻译是 集合已修改;枚举操作可能无法执行。也就是说我们在遍历集合等可迭代元素时,进行了集合的修改导致的错误。 本质上因为Collection返回的IEnumerator把当前的属性暴露为只读属性,所以对其的修改会导致运行时错误,只需要把foreach改为for来遍历就好了。 首先,我们知道要使用Foreach in语句需要满足下列条件: 1.迭代集合实现了System.Collections.IEnumerable或者System.Collections.Generic.IEnumerable<T>接口; 2.有public Enumerator GetEnumerator();方法 3.GetEnumerator的返回类型是Enumerator,那就必须有Current属性和MoveNext方法 其实1,2,3是一个东西,关联性很强。 而当前的的current属性以及值都是只读的,所以不能进行修改。

解决方案:

将foreach 循环改变成for循环。。