C# 不支持动态数组,用 ArrayList 可以实现动态数组的功能。
ArrayList 的名称空间是 System.Collections。
ArrayList 元素类型
和数组不同,ArrayList 的各个元素的类型可以不同。
声明对象
//声明 ArrayList 有三种重载方法,较常用的有两种
ArrayList al = new ArrayList();
ArrayList al = new ArrayList(3);
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 常用的代码,都是望名生义,不再举例。
获取元素值
object value = al[index]; //al 为 ArrayList 对象,一般需要再对 value 进行类型转换,比如:int n = (int)value;
设置元素值
al[index] = value; //al 为 ArrayList 对象,index 必须小于 Count
追加元素
int ArrayList.Add(object value) 返回添加的元素的索引
插入元素
void ArrayList.Insert(int index, object value)
删除元素
删除元素后,后面的元素会前移,但 Capacity 不会变化。
void ArrayList.Remove(object obj) 从前(索引 0)往后查找,删除找到的第一个和 obj 相同的元素
void ArrayList.RemoveAt(int index) 删除索引 index 对应的元素
void ArrayList.RemoveRange(int index, int count) 从索引 index 开始,删除 count 个元素
void ArrayList.RemoveAt(int index) 删除索引 index 对应的元素
void ArrayList.RemoveRange(int index, int count) 从索引 index 开始,删除 count 个元素
查找元素
int ArrayList.IndexOf(object value) 从前(索引 0)往后查找,返回找到的第一个和 obj 相同的元素的索引
int ArrayList.IndexOf(object value, int startIndex)
int ArrayList.IndexOf(object value, int startIndex, int count)
int ArrayList.IndexOf(object value, int startIndex)
int ArrayList.IndexOf(object value, int startIndex, int count)
int ArrayList.LastIndexOf(object value) 从后往前(索引 0)查找,返回找到的第一个和 obj 相同的元素的索引
int ArrayList.LastIndexOf(object value, int startIndex)
int ArrayList.LastIndexOf(object value, int startIndex, int count)
int ArrayList.LastIndexOf(object value, int startIndex)
int ArrayList.LastIndexOf(object value, int startIndex, int count)
相关亩?/STRONG>