`
tiantian911
  • 浏览: 217774 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

那时梁静茹还很青涩~Foreach删除arraylist元素

阅读更多
写p2p overlay的时候,碰到一个比较郁闷的问题,就是在foreach中想操作arraylist,这个后却配到了exception,我的办法是采用倒序循环:

  for (int i = msgList.Count; --i > 0; )
            {
                message = (Message)msgList[i];
                Console.WriteLine("To-ID is {0} and My-ID is {1}", message.getIdTo(), currentid);
                if (message.getIdTo().Equals(currentid))
                // if(string.Equals(currentid,m.getIdTo()))
                {
                    Console.WriteLine("Find message in list!");
                    //find object thread, send msg to him.
                    byte[] byteData = new data(Command.DISPLAY, message.getMsg(), "", "").toBytes();
                    handler.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(SendCallBack), null);
                    msgList.RemoveAt(i);
                    //handler.Send(byteData);
                }
            }


2
1
分享到:
评论
1 楼 RednaxelaFX 2008-03-27  
C#的foreach循环只能读取数组或collection里的内容,而不应该修改数组或collection的内容。
MSDN如是说:
引用
foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。

如果用foreach来做删除肯定是会出错的……

相关推荐

    C#在foreach遍历删除集合中元素的三种实现方法

    在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。 集合已修改;可能无法执行枚举操作。 方法一:采用for循环,并且从尾到头遍历 如果...

    ArrayList常用的方法

    RemoveAt 移除 ArrayList 的指定索引處的元素 Insert 將元素插入 ArrayList 的指定索引處 ArrayList arrlist = new ArrayList(); //..使用 Add方法在 ArrayList中添加元素(添加到ArrayList末尾) arrlist.Add...

    foreach.js低版本IE数组和HTMLCollection元素集合不兼容forEach循环遍历的处理方法

    低版本IE数组和HTMLCollection元素集合不兼容forEach循环遍历的处理方法 原生JavaScript通过name获取dom元素得到的是 HTMLCollection元素集合 要想循环遍历可以用forEach,但是在低于ie9的版本下不兼容 var list...

    ArrayList.md

    老猿说说-ArrayList MD文件 1. 所有的操作都是线程安全的,我们在使用时,无需再加锁; 2. 多个线程同时进行put、remove等操作时并不会阻塞,...5. 提供了很多Stream流式方法,比如说:forEach、search、reduce等等。

    java 使用foreach遍历集合元素的实例

    主要介绍了java 使用foreach遍历集合元素的实例的相关资料,这里提供实例帮助大家理解如何使用foreach 进行遍历,希望能帮助到大家,

    C-FOREACH用法

    C-FOREACH用法需要遍历的集合放到items中,然后定义一个temp为每次应用到的集合元素,然后设置起步值及叠加步数

    for,foreach,iterator的用法和区别

    iterator 是一个接口类型,他不关心集合或者数组的类型,而且他还能随时修改和删除集合的元素。例如:public void display(Iterator<object> it){ while(it.hasNext()){ system.out.print(it.next()+""); } } 4. ...

    对Foreach语句测试

    对对Foreach语句测试

    queue.h ---- TAILQ_FOREACH_SAFE

    改进了linux tailq队列下在遍历时删除多个元素的问题。可以使用TAILQ_FOREACH_SAFE下面进行节点删除操作。不会出现野指针问题

    c#中Foreach详细用法

    C#中Foreach详细用法讲述了Foreach用法,并以具体事例为基础。

    c:forEach标签的使用祥解

    cforEach标签的使用祥解。c:forEach用法的详细介绍。

    foreach循环

    利用foreach循环显示数组所有元素,对foreach循环进行更深了解

    jstl标签 forEach详解

    jstl forEach标签用法详解,里面介绍地非常详细,有实例说明的。

    C#并发实战记录之Parallel.ForEach使用

    主要给大家介绍了关于C#并发实战记录之Parallel.ForEach使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    Mybatis批量foreach merge into的用法

    Mybatis批量foreach merge into的用法,这是介绍Mybatis批量foreach merge into的用法的文档

    for foreach效率测试代码

    for foreach测试代码 执行1000000万次字符串遍历操作。

    Java中ArrayList在foreach里remove的问题详析

    主要给大家介绍了关于Java中ArrayList在foreach里remove问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧

    C#使用foreach语句搜索数组元素的方法

    主要介绍了C#使用foreach语句搜索数组元素的方法,涉及C#使用foreach语句遍历数组实现搜索功能的技巧,非常具有实用价值,需要的朋友可以参考下

    For 和 Foreach 的效率问题

    For 和 Foreach 的效率问题,先猜一下,再运行一下,看猜的对不对。

Global site tag (gtag.js) - Google Analytics