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