c#中ArrayList和List的常用方法

在 C# 中,ArrayList和List<T>是常用的集合类型,它们提供了丰富的方法来操作列表。以下是它们的一些常用方法:

1. 创建列表

复制代码
using System;
using System.Collections;  // ArrayList
using System.Collections.Generic;  // List<T>
​
// 创建ArrayList(可存储任意类型)
ArrayList arrayList = new ArrayList();
​
// 创建泛型List(强类型,推荐使用)
List<string> list = new List<string>();

2. 添加元素

复制代码
// ArrayList(可添加任意类型)
arrayList.Add("apple");  // 添加字符串
arrayList.Add(123);      // 添加整数
arrayList.Add(true);     // 添加布尔值
​
// List<T>(只能添加指定类型)
list.Add("apple");
list.Add("banana");
list.Add("cherry");
​
// 在指定位置插入元素
list.Insert(1, "grape");  // 结果:[apple, grape, banana, cherry]

3. 访问元素

复制代码
// 通过索引访问(索引从0开始)
string first = list[0];  // apple
​
// 获取列表数量
int count = list.Count;  // 4
​
// 检查索引是否越界
if (index < list.Count) {
    Console.WriteLine(list[index]);
}

4. 修改元素

复制代码
// 修改指定位置的元素
list[1] = "orange";  // 结果:[apple, orange, banana, cherry]

5. 删除元素

复制代码
// 通过值删除(删除第一个匹配项)
list.Remove("banana");  // 结果:[apple, orange, cherry]
​
// 通过索引删除
list.RemoveAt(0);       // 结果:[orange, cherry]
​
// 删除范围内的元素
list.RemoveRange(0, 1); // 结果:[cherry]
​
// 清空列表
list.Clear();           // 结果:[]

6. 判断元素是否存在

复制代码
bool hasApple = list.Contains("apple");  // false

7. 遍历列表

复制代码
// 使用foreach循环
foreach (string item in list) {
    Console.WriteLine(item);
}
​
// 使用for循环
for (int i = 0; i < list.Count; i++) {
    Console.WriteLine(list[i]);
}
​
// 使用Lambda表达式(C# 3.0+)
list.ForEach(item => Console.WriteLine(item));

8. 转换为数组

复制代码
string[] array = list.ToArray();

9. 排序

复制代码
// 升序排序(元素需实现IComparable接口)
list.Sort();

// 降序排序
list.Sort((a, b) => b.CompareTo(a));

// 自定义排序(按字符串长度)
list.Sort((a, b) => a.Length.CompareTo(b.Length));

10. 查找元素

复制代码
// 查找第一个匹配项
string firstFruit = list.Find(x => x.StartsWith("a"));

// 查找所有匹配项
List<string> fruitsWithA = list.FindAll(x => x.Contains("a"));

// 查找元素索引
int index = list.FindIndex(x => x == "apple");

ArrayList 特有的方法

复制代码
// 转换ArrayList中的所有元素类型
ArrayList converted = new ArrayList();
foreach (object item in arrayList) {
    converted.Add(Convert.ToString(item));
}

// 检查ArrayList是否固定大小
bool isFixedSize = arrayList.IsFixedSize;  // false

List<T> 特有的方法

复制代码
// 添加多个元素
list.AddRange(new[] { "apple", "banana" });

// 反转列表顺序
list.Reverse();

// 判断所有元素是否满足条件
bool allLongNames = list.TrueForAll(x => x.Length > 3);

// 调整列表容量
list.Capacity = 100;  // 设置最小容量
list.TrimExcess();    // 释放多余容量

注意事项

  • ArrayList 非泛型:可以存储任意类型,但存在装箱 / 拆箱开销,且类型不安全。

  • List<T> 泛型:推荐使用,类型安全且性能更好。

  • 线程安全 :两者都不是线程安全的,如需线程安全可使用ConcurrentBag<T>或手动同步。

相关推荐
ITHAOGE1522 分钟前
下载 | Windows Server 2016最新纯净版ISO映像!(集成9月更新、标准版、数据中心版、14393.9514)
windows·科技·微软·电脑
疯狂的维修1 小时前
关于用C#写电机起保停控制
开发语言·c#
用户788477316345 小时前
门店核销闭环:小程序扫码 + .NET 幂等接口 + WPF 看板,一天能跑通
微信小程序·c#
传奇开心果编程6 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
懒人87 小时前
Windows11系统优化指南
windows·经验分享
Vex2une7 小时前
Windows 磁盘管理发展史:从 FDISK 分区表到存储池与虚拟磁盘
windows·gpt·磁盘管理·mbr·fdisk·动态磁盘·储存池
今夕资源网7 小时前
从夯到拉模拟器RankPix windows本地版 exe
windows·exe·从夯到拉·从夯到拉模拟器·rankpix·本地版
samble8 小时前
从零搭建灌装监控系统(十三):报警系统设计,生命周期与通知
c#·wpf·mvvm·modbus·工业控制
kakakahahahaha8 小时前
Windows系统时间校准指南:time命令、date命令、w32tm /resync与CMOS排查
windows·笔记本电脑·软件需求
一技安身9 小时前
【mysql】Windows MySQL 8.4.10 绿色免安装喂饭教程
windows·mysql·adb