C#—Collection was modified;enumeration operation may not execute
【摘要】 错误 Collection was modified; enumeration operation may not execute翻译是 集合已修改;枚举操作可能无法执行。也就是说我们在遍历集合等可迭代元素时,进行了集合的修改导致的错误。本质上因为Collection返回的IEnumerator把当前的属性暴露为只读属性,所以对其的修改会导致运行时错误,只需要把foreach改为for来遍...
错误 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循环。。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)