zoukankan      html  css  js  c++  java
  • 针对:Arraylist集合无法修改,下一次枚举无法操作的解决方案

         

         在考试系统的调试过程中,需要对添加的试题进行移除。而由于试题是放置在arraylist的动态数组中的。一下就是这个用来循环移除的代码。这个代码看起来没有任何问题,但是由于arraylist在遍历过程中是无法对其进行修改的。所以总会出现无法进行下一次枚举的错误。  


    源码:

            
    foreach (DataRow row in ltAllQuestion)
                {
                    if (row["QuestionID"].ToString () == id)
                    {
                        ltAllQuestion.Remove(row);
                    }
    }

           

    解决方案:


          
    //定义用来停止计数的标识
                 bool flag=false;
    	               //定义用来计量循环次数的计数器
    	  int countforremove=0;
    	  foreach (DataRow row in ltAllQuestion)
    	            {
    	                if (row["QuestionID"].ToString () == id)
    	                {
    		            flag=true;
    	                                    }
    	If(flag==false){
    		countforremove=countforremove+1;
    	}
    	}
    
      

          另外还有一些其他的解决方法:




             总结:这个问题的出现就是arraylist这个集合不允许在枚举时对集合进行修改。因为一旦修改了,就改变了这个数组的结构。就无法判断下一次遍历从哪里开始了。只能通过某种方法将这个移除操作挪到外面的循环外来执行。可能这个方法很简单,但是这个解决的思路也是废了我很长时间的。方法不重要的,重要的是解决的思路。
  • 相关阅读:
    ELK的学习与应用
    windows 常用命令
    Electron笔记
    C#基础
    IIS运行NetCore程序
    nuget打包
    web pack备忘
    基于并发订课系统的架构演变
    面试造核弹的童话
    Python3-接口自动化-11-使用join方法请求参数拼接,格式key1=value1&keys=value2....
  • 原文地址:https://www.cnblogs.com/guziming/p/4232700.html
Copyright © 2011-2022 走看看