我是靠谱客的博主 酷炫柜子,最近开发中收集的这篇文章主要介绍【C#】Collection was modified; enumeration operation may not execute,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 错误
- 应用场景
- 发生错误的原因
- 解决方案
- 方案一
- 方案二
- 方案三
- 参考
错误
集合已修改;枚举操作可能无法执行
应用场景
(1)有一个List保存了所有UI的prefab。
(2)默认情况下,我会先把所有prefab保存到该List中。接着,在某些时刻根据名称在List中去查找,得到特定的prefab。
结果,今天,我写了这样的代码:
- 查找某个prefab的时候,我又往List中添加了几个新的prefab。
- 此时,原本的代码依然在不停地枚举List,查找特定的prefab,于是就报了这个错。
发生错误的原因
通常,.Net集合不支持同时枚举和修改。如果尝试在枚举期间修改集合列表,则会引发异常。因此,此错误背后的问题是,当我们遍历列表/字典时,我们无法对其进行修改。
解决方案
方案一
foreach(Subscriber s in subscribers)
至
foreach(Subscriber s in subscribers.ToList())
方案二
lock (subscribers)
{
foreach (var subscriber in subscribers)
{
//do something
}
}
方案三
统一修改,统一遍历/枚举,不要同时操作。
参考
stackoverflow
最后
以上就是酷炫柜子为你收集整理的【C#】Collection was modified; enumeration operation may not execute的全部内容,希望文章能够帮你解决【C#】Collection was modified; enumeration operation may not execute所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复