首頁 > 後端開發 > C++ > 為什麼修改了我的' foreach”循環扔一個集合;枚舉操作可能不會執行”錯誤?

為什麼修改了我的' foreach”循環扔一個集合;枚舉操作可能不會執行”錯誤?

Patricia Arquette
發布: 2025-02-02 03:51:09
原創
597 人瀏覽過

Why Does My `foreach` Loop Throw a

錯誤“收集已修改;枚舉操作可能不會執行”,當aforeach循環在循環執行過程中修改的集合上進行迭代時。 這通常會發生在循環本身或另一個線程中的集合中添加或刪除項目時。

提供的示例在通過

詞典迭代的方法中顯示了此錯誤。該問題源於NotifySubscribers()>方法,該方法可能會間接修改subscribers字典時,SignalData>正在運行。 如果subscribers觸發訂戶的添加或刪除,這可能會發生。 NotifySubscribers()> SignalData解決方案是在輸入循環之前創建集合的副本

。 這樣可以防止對原始集合的修改影響循環的迭代:>

使用>創建一個包含

快照的新列表。 現在,
foreach (Subscriber s in subscribers.Values.ToList())
{
    // Notify subscriber s
}
登入後複製
循環在此獨立副本上運行,以確保對原始字典的修改不會導致錯誤。 這保證了安全可靠的枚舉。

以上是為什麼修改了我的' foreach”循環扔一個集合;枚舉操作可能不會執行”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板