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

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

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

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

    所以先尝试 lock(syncRoot){}

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

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

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

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

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

  • 相关阅读:
    2-2. 然后是几点(15)
    2-1. 厘米换算英尺英寸(15)
    2-0. 整数四则运算(10)
    忙碌的下半学期
    ACM 第十九天
    ACM 第十八天
    ACM 第十七天
    凸包模板
    极角排序常用方法
    ACM 第十六天
  • 原文地址:https://www.cnblogs.com/xpvincent/p/9588102.html
Copyright © 2011-2022 走看看