zoukankan      html  css  js  c++  java
  • NET 集合已修改 可能无法执行枚举操作 C#

    今天编写程序时 修改了list集合 在foreach时报 “集合已修改;可能无法执行枚举操作。”错误。

    首先想到的是没有锁定集合对象。

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

    所以先尝试 lock(syncRoot){}

    lock关键字用法,多线程共用对象时,操作对象时锁定对象,这样如果有别的线程访问对象,则自动加入队列等待。确保对象操作过程中准确性。

    但是问题依旧,查了一下说foreach是只读的,集合如果变更就会出这个问题

    于是把foreach改为 for(int i =0) 后,问题解决

    foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等)。要避免这个问题,就应该使用for循环。

    在这里记录下 有类似问题希望对你有所帮助

    作者:不老神仙
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    bzoj2438
    bzoj3040
    [AHOI2009]维护序列
    [JSOI2008]最大数
    洛谷3378堆模板
    洛谷1439
    洛谷2756
    bzoj1016
    洛谷1875
    [模板] 强连通分量
  • 原文地址:https://www.cnblogs.com/allanbolt/p/1914565.html
Copyright © 2011-2022 走看看