首页 >后端开发 >C++ >为什么修改了我的' foreach”循环扔一个集合;枚举操作可能不会执行”错误?

为什么修改了我的' foreach”循环扔一个集合;枚举操作可能不会执行”错误?

Patricia Arquette
Patricia Arquette原创
2025-02-02 03:51:09579浏览

Why Does My `foreach` Loop Throw a

错误“收集已修改;枚举操作可能不会执行”,当aforeach循环在循环执行过程中修改的集合上进行迭代时。 这通常会发生在循环本身或另一个线程中的集合中添加或删除项目时。

提供的示例在通过

词典迭代的方法中显示了此错误。该问题源于NotifySubscribers()>方法,该方法可能会间接修改subscribers字典时,SignalData>正在运行。 如果subscribers触发订户的添加或删除,这可能会发生。NotifySubscribers()> SignalData解决方案是在输入循环之前创建集合的副本

。 这样可以防止对原始集合的修改影响循环的迭代:>

使用>创建一个包含

快照的新列表。 现在,
<code class="language-csharp">foreach (Subscriber s in subscribers.Values.ToList())
{
    // Notify subscriber s
}</code>
循环在此独立副本上运行,以确保对原始字典的修改不会导致错误。 这保证了安全可靠的枚举。

以上是为什么修改了我的' foreach”循环扔一个集合;枚举操作可能不会执行”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn