C# 集合已修改 可能無法執行枚舉操作 zz


今天編寫程序時 修改了list集合 在foreach時報 “集合已修改;可能無法執行枚舉操作。”錯誤。

首先想到的是沒有鎖定集合對象。

增加了 private readonly object syncRoot = new object();

所以先嘗試 lock(syncRoot){}

lock關鍵字用法,多線程共用對象時,操作對象時鎖定對象,這樣如果有別的線程訪問對象,則自動加入隊列等待。確保對象操作過程中准確性。

但是問題依舊,查了一下說foreach是只讀的,集合如果變更就會出這個問題

於是把foreach改為 for(int i =0) 后,問題解決

foreach是取只讀的,在取的時候數據不能變(包括修改,刪除,添加等)。要避免這個問題,就應該使用for循環。

在這里記錄下 有類似問題希望對你有所幫助


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM