写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);
}
}
分享到:
相关推荐
在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。 集合已修改;可能无法执行枚举操作。 方法一:采用for循环,并且从尾到头遍历 如果...
在C#编程语言中,`ArrayList`是一种非常实用的数据结构,它提供了动态数组的功能,能够存储不同类型的元素,并且支持多种操作方法。本文将详细介绍`ArrayList`的一些常用方法及其应用场景。 #### 1. `Add` **功能...
在上面的代码中,我们使用foreach循环来遍历ArrayList中的元素。在每次循环中,我们使用Console.Write方法来输出当前元素的字符串表示形式。 使用GetEnumerator遍历ArrayList GetEnumerator是ArrayList中的一种...
ArrayList还提供了许多其他方法,如Capacity属性可获取或设置ArrayList的当前容量,Count属性返回ArrayList中的元素数量,Insert方法在指定位置插入元素,Sort和BinarySearch方法用于排序和搜索元素(需要IComparer...
- `ArrayList` 中的元素默认为 `object` 类型,因此如果添加的是特定类型的元素(如 `int`),在使用时需要进行类型转换。 - `ArrayList` 可以动态地增加或减少元素数量。 #### 三、C# List<T> 类的用法及特点 **...
首先,我们需要创建一个ArrayList类,这个类将包含添加、删除、查找、更新和遍历元素等基本操作。由于JavaScript的Array对象已经提供了这些功能,我们可以通过扩展Array原型来创建ArrayList。 ```javascript ...
5. **删除元素**:`remove`方法用于根据索引移除元素,并调整后续元素的位置。 ```c void arrayListRemove(ArrayList *list, int index); ``` 6. **获取元素**:`get`方法返回指定索引处的元素。 ```c void *...
columnIndex++)` 这两层循环遍历ArrayList的所有元素和每个元素的所有属性。通过`InvokeMember`方法获取属性值,并将其转换为字符串,然后存入DataTable的新行`drRow`中。如果属性值不为null,才将其添加到行中。 ...
可以通过增强for循环(foreach)或传统的迭代器方式遍历ArrayList中的元素。 ```java for (String s : list) { System.out.println(s); } Iterator<String> iterator = list.iterator(); while (iterator....
在.NET框架中,ArrayList是System.Collections命名空间下的一种动态数组,它可以存储任意类型的对象,而ListBox控件则是Windows Forms应用程序中常见的用户界面元素,用于显示一个可选项目的列表。本篇将详细介绍...
此外,ArrayList还支持通过索引访问和修改元素,以及使用foreach循环遍历元素。 然而,ArrayList也有其局限性。由于ArrayList内部存储的是Object类型,这意味着在存储和访问元素时可能需要进行类型转换,这会带来...
在这个练习中,我们将创建一个ArrayList实例,向其中添加各种类型的对象,然后执行常见的操作,如遍历、查找、插入和删除元素。以下是一些可能的操作步骤: 1. 创建ArrayList实例: ```csharp ArrayList list = new...
实现List接口意味着ArrayList必须提供一系列用于添加、删除、修改和查找元素的方法。RandomAccess接口是一个标记接口,表示ArrayList支持高效的随机访问。Cloneable接口表明ArrayList的对象可以被克隆,而...
然而,在使用`forEach`循环时,直接尝试修改遍历的集合(例如删除或添加元素)是不被允许的,因为这会导致`ConcurrentModificationException`异常。本文将探讨在使用`forEach`循环中遇到无法删除元素的问题,并提供...
我们将使用 ArrayList 的 Add() 方法将这些数据添加到 ArrayList 中,然后使用 foreach 循环取出 ArrayList 元素内容并显示其数据类型。 四、ArrayList 的 Trade-Off ArrayList 可以很方便地用来存储任何参考类型...
7. 查询和操作:ArrayList还提供了其他方法,如Capacity(获取或设置容量)、Count(获取元素数量)、IndexOf(查找元素索引)等。 ArrayList的性能和局限性: 1. 性能:ArrayList的插入和删除操作在表中间位置时,...
这是实现IEnumerable接口的一部分,使得ArrayList可以用于foreach循环。 在实现这些方法时,我们还需要考虑线程安全性,如果ArrayList将在多线程环境中使用。这可能涉及锁定机制来防止并发修改。 此外,OOP原则如...
然而,在使用foreach循环时,ArrayList不能add元素,也不能remove元素,否则可能会抛异常。那么,为什么ArrayList不能在foreach循环中remove元素呢? 答案就在于foreach循环的实现机制。foreach循环实际上是使用了...
Parallel.ForEach是一个并发执行集合中的元素的方法,可以对集合中的每个元素执行一系列操作。使用List.AsParallel().ForAll方法可以实现并发执行集合中的元素。 三、变量自增问题的解决方法 在使用Parallel....