`
tiantian911
  • 浏览: 223249 次
  • 性别: 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常用的方法

    在C#编程语言中,`ArrayList`是一种非常实用的数据结构,它提供了动态数组的功能,能够存储不同类型的元素,并且支持多种操作方法。本文将详细介绍`ArrayList`的一些常用方法及其应用场景。 #### 1. `Add` **功能...

    如何遍历ArrayList

    在上面的代码中,我们使用foreach循环来遍历ArrayList中的元素。在每次循环中,我们使用Console.Write方法来输出当前元素的字符串表示形式。 使用GetEnumerator遍历ArrayList GetEnumerator是ArrayList中的一种...

    ASP .NET - ArrayList对象

    ArrayList还提供了许多其他方法,如Capacity属性可获取或设置ArrayList的当前容量,Count属性返回ArrayList中的元素数量,Insert方法在指定位置插入元素,Sort和BinarySearch方法用于排序和搜索元素(需要IComparer...

    C# Array和ArrayList,List区别

    - `ArrayList` 中的元素默认为 `object` 类型,因此如果添加的是特定类型的元素(如 `int`),在使用时需要进行类型转换。 - `ArrayList` 可以动态地增加或减少元素数量。 #### 三、C# List<T> 类的用法及特点 **...

    JavaScript 实现基础 ArrayList 功能

    首先,我们需要创建一个ArrayList类,这个类将包含添加、删除、查找、更新和遍历元素等基本操作。由于JavaScript的Array对象已经提供了这些功能,我们可以通过扩展Array原型来创建ArrayList。 ```javascript ...

    c版的arraylist

    5. **删除元素**:`remove`方法用于根据索引移除元素,并调整后续元素的位置。 ```c void arrayListRemove(ArrayList *list, int index); ``` 6. **获取元素**:`get`方法返回指定索引处的元素。 ```c void *...

    ArrayList转化为DataTable

    columnIndex++)` 这两层循环遍历ArrayList的所有元素和每个元素的所有属性。通过`InvokeMember`方法获取属性值,并将其转换为字符串,然后存入DataTable的新行`drRow`中。如果属性值不为null,才将其添加到行中。 ...

    Arraylist例子代码 java

    可以通过增强for循环(foreach)或传统的迭代器方式遍历ArrayList中的元素。 ```java for (String s : list) { System.out.println(s); } Iterator<String> iterator = list.iterator(); while (iterator....

    使用数组列表ArrayList填充ListBox

    在.NET框架中,ArrayList是System.Collections命名空间下的一种动态数组,它可以存储任意类型的对象,而ListBox控件则是Windows Forms应用程序中常见的用户界面元素,用于显示一个可选项目的列表。本篇将详细介绍...

    c# 数组与集合(ArrayList)游戏开发高级使用举例

    此外,ArrayList还支持通过索引访问和修改元素,以及使用foreach循环遍历元素。 然而,ArrayList也有其局限性。由于ArrayList内部存储的是Object类型,这意味着在存储和访问元素时可能需要进行类型转换,这会带来...

    数组和集合对象(三) ArrayList练习

    在这个练习中,我们将创建一个ArrayList实例,向其中添加各种类型的对象,然后执行常见的操作,如遍历、查找、插入和删除元素。以下是一些可能的操作步骤: 1. 创建ArrayList实例: ```csharp ArrayList list = new...

    java关键字ArrayList详解

    实现List接口意味着ArrayList必须提供一系列用于添加、删除、修改和查找元素的方法。RandomAccess接口是一个标记接口,表示ArrayList支持高效的随机访问。Cloneable接口表明ArrayList的对象可以被克隆,而...

    forEach中为什么不能删除元素解决方案.pdf

    然而,在使用`forEach`循环时,直接尝试修改遍历的集合(例如删除或添加元素)是不被允许的,因为这会导致`ConcurrentModificationException`异常。本文将探讨在使用`forEach`循环中遇到无法删除元素的问题,并提供...

    ArrayList类别常用属性和方法[汇编].pdf

    我们将使用 ArrayList 的 Add() 方法将这些数据添加到 ArrayList 中,然后使用 foreach 循环取出 ArrayList 元素内容并显示其数据类型。 四、ArrayList 的 Trade-Off ArrayList 可以很方便地用来存储任何参考类型...

    arraylist的C#基本实现

    7. 查询和操作:ArrayList还提供了其他方法,如Capacity(获取或设置容量)、Count(获取元素数量)、IndexOf(查找元素索引)等。 ArrayList的性能和局限性: 1. 性能:ArrayList的插入和删除操作在表中间位置时,...

    c#重写ArrayList源代码

    这是实现IEnumerable接口的一部分,使得ArrayList可以用于foreach循环。 在实现这些方法时,我们还需要考虑线程安全性,如果ArrayList将在多线程环境中使用。这可能涉及锁定机制来防止并发修改。 此外,OOP原则如...

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

    然而,在使用foreach循环时,ArrayList不能add元素,也不能remove元素,否则可能会抛异常。那么,为什么ArrayList不能在foreach循环中remove元素呢? 答案就在于foreach循环的实现机制。foreach循环实际上是使用了...

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

    Parallel.ForEach是一个并发执行集合中的元素的方法,可以对集合中的每个元素执行一系列操作。使用List.AsParallel().ForAll方法可以实现并发执行集合中的元素。 三、变量自增问题的解决方法 在使用Parallel....

Global site tag (gtag.js) - Google Analytics