命名空间: using System.Collections;
Capacity:获取或设置 ArrayList 可包含的元素数目。
Count:获取 ArrayList 中实际包含的元素数目。
Item[Int32]:获取或设置指定索引处的元素。
Add(Object):向 ArrayList 的末尾添加一个元素。
AddRange(ICollection):向 ArrayList 的末尾添加元素集合。
Clear():移除所有元素。
Contains(Object):判断 ArrayList 是否包含特定元素。
IndexOf(Object):返回某个元素在 ArrayList 中的索引。
Insert(Int32, Object):在指定索引位置插入一个元素。
Remove(Object):移除特定元素的第一个匹配项。
RemoveAt(Int32):移除指定索引处的元素。
Sort():对 ArrayList 的元素排序。
ToArray():将 ArrayList 转换为数组。
ArrayList array1 = new ArrayList();
WriteLine(array1.Capacity); //输出0(初始容量为0)
array1.Add(1);
WriteLine(array1.Capacity); //输出4(首次扩容到4)
array1.Add("two");
array1.Add(3);
array1.Add("four");
array1.Add(5);
WriteLine(array1.Capacity); //输出8(再次扩容到8)
是一个将值类型转换为对象类型的过程,涉及到从栈(值类型通常存储的位置)到堆(引用类型存储的位置)的数据复制。大致步骤:
拆箱是将引用类型转换回其原始的值类型的过程。拆箱过程涉及从堆到栈的数据复制。大致步骤:
== 用于判断两个对象引用是否指向同一个对象实例,即它们在内存中的地址是否相同;
Equals 方法用于比较两个对象的值或内容是否相等。这被称为值相等性。
装箱和拆箱操作都涉及内存分配和数据复制,这在性能上有一定的成本。特别是在频繁执行这些操作的情况下,性能影响可能更为显著。
由于 ArrayList 是一个非泛型集合,它可以存储任何类型的对象。但这种类型的不确定性会导致运行时错误,并且需要频繁的类型转换。因此,在需要存储不同类型数据的场景中可以使用 ArrayList,但现代的 .NET 开发中,推荐使用泛型集合,如 List< T >,因为它们提供了类型安全和更好的性能。
随着泛型的普及,可以通过使用泛型集合(如 List< T >)来避免许多不必要的装箱和拆箱操作。
ArrayList、Queue、Hashtable等也是类似的: