C#ArrayList:动态数组
在 C# 中,动态数组(ArrayList)代表了可被单独索引的对象的有序集合。动态数组基本上可以代替数组,唯一与数组不同的是,动态数组可以使用索引在指定的位置添加和移除指定的项目,动态数组会自动重新调整自身的大小。另外,动态数组允许在列表中进行动态内存分配、增加、搜索、排序等操作。
using System;
using System.Collections;
class Program
{
static void Main(string[] args)
{
// 创建一个 ArrayList 实例
ArrayList arrayList = new ArrayList();
// 添加元素(支持多种数据类型)
arrayList.Add("Apple");
arrayList.Add(123);
arrayList.Add(true);
arrayList.Add(3.14);
Console.WriteLine("初始 ArrayList 内容:");
PrintArrayList(arrayList);
// 插入元素到指定位置
arrayList.Insert(1, "Inserted Item");
Console.WriteLine("\n插入元素后的内容:");
PrintArrayList(arrayList);
// 删除特定值的元素
arrayList.Remove("Inserted Item");
Console.WriteLine("\n删除 'Inserted Item' 后的内容:");
PrintArrayList(arrayList);
// 删除指定索引处的元素
arrayList.RemoveAt(0);
Console.WriteLine("\n删除索引 0 处的元素后的内容:");
PrintArrayList(arrayList);
// 查找元素是否存在
bool containsNumber = arrayList.Contains(123);
Console.WriteLine($"\n是否包含数字 123?{containsNumber}");
// 获取索引
int index = arrayList.IndexOf(123);
Console.WriteLine($"数字 123 的索引是: {index}");
// 排序(注意:混合类型时可能抛出异常)
try
{
arrayList.Sort();
Console.WriteLine("\n排序后的内容:");
PrintArrayList(arrayList);
}
catch (Exception ex)
{
Console.WriteLine($"排序失败: {ex.Message}");
}
// 属性访问
Console.WriteLine($"\nCount(实际元素数): {arrayList.Count}");
Console.WriteLine($"Capacity(当前容量): {arrayList.Capacity}");
Console.WriteLine($"IsFixedSize(是否固定大小): {arrayList.IsFixedSize}");
Console.WriteLine($"IsReadOnly(是否只读): {arrayList.IsReadOnly}");
Console.WriteLine($"IsSynchronized(是否线程安全): {arrayList.IsSynchronized}");
Console.WriteLine($"SyncRoot(用于线程同步的对象): {arrayList.SyncRoot}");
// 使用线程安全方法访问(推荐方式)
lock (arrayList.SyncRoot)
{
Console.WriteLine("\n在锁内执行操作以确保线程安全...");
arrayList.Add("Thread-safe Item");
}
Console.WriteLine("\n线程安全操作后的内容:");
PrintArrayList(arrayList);
}
// 辅助方法:打印 ArrayList 中的所有元素
static void PrintArrayList(ArrayList list)
{
foreach (var item in list)
{
Console.WriteLine(item);
}
}
}
输出结果:
初始 ArrayList 内容:
Apple
123
True
3.14插入元素后的内容:
Apple
Inserted Item
123
True
3.14删除 'Inserted Item' 后的内容:
Apple
123
True
3.14删除索引 0 处的元素后的内容:
123
True
3.14是否包含数字 123?True
数字 123 的索引是: 0排序失败: At least one element in the array is of a type that is not assignable to the type of the destination array.
Count(实际元素数): 3
Capacity(当前容量): 4
IsFixedSize(是否固定大小): False
IsReadOnly(是否只读): False
IsSynchronized(是否线程安全): False
SyncRoot(用于线程同步的对象): System.Collections.ArrayList在锁内执行操作以确保线程安全...
线程安全操作后的内容:
123
True
3.14
Thread-safe Item
更多推荐


所有评论(0)