我是靠谱客的博主 酷炫柜子,最近开发中收集的这篇文章主要介绍【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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部