C# 不支持动态数组,用 ArrayList 可以实现动态数组的功能。
ArrayList 的名称空间是 System.Collections。
ArrayList 元素类型
和数组不同,ArrayList 的各个元素的类型可以不同。
声明对象
ArrayList al = new ArrayList();
ArrayList al = new ArrayList(3);
上例中,参数值 3 表示容量,即可以容纳多少个元素。
Capacity 与 Count
ArrayList 具有 Capacity 和 Count 属性,分别表示容量和数量。
- Capacity 表示 ArrayList 可包含的元素数;Count 表示实际包含的元素数。
- Capacity 可读可写;Count 只读。
当 Capacity 不够时
我们的 Capacity 如果小了,无法容纳我们实际的元素个数,这时再增加元素时:
如果指定了 Capacity,Capacity 将按指定的 Capacity 的倍数增长(如果 Capacity 小于 2,将按 2 的倍数增长),比如指定了 Capacity 为 3,那么将按 3、6、9、12、15、18 ……线性的方式增长,直到可以容纳实际的元素个数。
如果没有指定 Capacity 值,Capacity 将按 2、4、8、16、32、64 ……指数的方式增长,直到可以容纳实际的元素个数。
Capacity 不会自动缩小
当 Capacity 被自动增大后,即使删除了某些元素,Capacity 也不会自动缩小,需要设置 Capacity 来缩小,注意 Capacity 不能小于当前 Count。
这里介绍一些 ArrayList 常用的代码,都是望名生义,不再举例。
获取元素值
设置元素值
追加元素
插入元素
删除元素
删除元素后,后面的元素会前移,但 Capacity 不会变化。
void ArrayList.RemoveAt(int index) 删除索引 index 对应的元素
void ArrayList.RemoveRange(int index, int count) 从索引 index 开始,删除 count 个元素
查找元素
int ArrayList.IndexOf(object value, int startIndex)
int ArrayList.IndexOf(object value, int startIndex, int count)
int ArrayList.LastIndexOf(object value, int startIndex)
int ArrayList.LastIndexOf(object value, int startIndex, int count)
相关亩?/STRONG>