C#中的ArrayList是什么?

来源:Java编程网作者:上海网站建设头衔:草根站长
导读:本期聚焦于小伙伴创作的《C#中的ArrayList是什么?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#中的ArrayList是什么?》有用,将其分享出去将是对创作者最好的鼓励。

ArrayList是C#中System.Collections命名空间下的一个非泛型集合类,本质上是一个可以动态扩容的数组结构,不需要在初始化时指定固定长度,能够根据存储元素的数量自动调整容量,同时提供了丰富的操作方法,方便开发者对集合内的元素进行增删改查等操作。

C#中的ArrayList是什么?

ArrayList的核心特性

和普通数组相比,ArrayList有以下几个显著特点:

  • 动态扩容:普通数组的长度在初始化后就固定了,无法再添加超出长度的元素,而ArrayList会根据元素数量自动扩展内部数组的容量,不需要开发者手动处理扩容逻辑。
  • 存储任意类型元素:普通数组只能存储声明时指定的同一类型元素,ArrayList可以存储object类型的元素,因此任意类型的对象都可以存入其中。
  • 提供丰富的内置方法:ArrayList封装了添加、删除、查找、排序等常用操作,不需要开发者自己实现这些逻辑,降低编码复杂度。

ArrayList的常用操作

初始化与添加元素

使用ArrayList前需要先引入System.Collections命名空间,然后通过new关键字创建实例,再调用Add方法添加元素:

using System;
using System.Collections;

class Program
{
    static void Main()
    {
        // 创建ArrayList实例
        ArrayList arrayList = new ArrayList();
        // 添加不同类型的元素
        arrayList.Add(100);
        arrayList.Add("测试字符串");
        arrayList.Add(DateTime.Now);
        // 输出元素数量
        Console.WriteLine("当前元素数量:" + arrayList.Count);
    }
}

访问与修改元素

ArrayList的元素可以通过索引访问,索引从0开始,修改元素直接对指定索引位置赋值即可:

using System;
using System.Collections;

class Program
{
    static void Main()
    {
        ArrayList arrayList = new ArrayList();
        arrayList.Add(10);
        arrayList.Add(20);
        arrayList.Add(30);
        // 访问索引为1的元素
        Console.WriteLine("索引1的元素:" + arrayList[1]);
        // 修改索引为1的元素
        arrayList[1] = 25;
        Console.WriteLine("修改后索引1的元素:" + arrayList[1]);
    }
}

删除元素

ArrayList提供了多种删除元素的方式,可以根据索引删除,也可以根据元素值删除,还可以清空所有元素:

using System;
using System.Collections;

class Program
{
    static void Main()
    {
        ArrayList arrayList = new ArrayList();
        arrayList.Add(1);
        arrayList.Add(2);
        arrayList.Add(3);
        arrayList.Add(4);
        // 按索引删除,删除索引为1的元素
        arrayList.RemoveAt(1);
        // 按值删除,删除元素值为3的元素
        arrayList.Remove(3);
        // 清空所有元素
        // arrayList.Clear();
        Console.WriteLine("删除后元素数量:" + arrayList.Count);
    }
}

查找与排序

ArrayList内置了Contains方法判断元素是否存在,Sort方法可以对集合内元素进行排序,不过排序要求集合内元素实现了IComparable接口:

using System;
using System.Collections;

class Program
{
    static void Main()
    {
        ArrayList arrayList = new ArrayList();
        arrayList.Add(5);
        arrayList.Add(1);
        arrayList.Add(3);
        arrayList.Add(2);
        // 判断元素是否存在
        bool hasThree = arrayList.Contains(3);
        Console.WriteLine("是否存在元素3:" + hasThree);
        // 排序
        arrayList.Sort();
        Console.WriteLine("排序后的元素:");
        foreach (var item in arrayList)
        {
            Console.WriteLine(item);
        }
    }
}

ArrayList的局限性

虽然ArrayList使用灵活,但在实际开发中并不推荐优先使用,主要有两个核心问题:

  • 类型不安全:因为ArrayList存储的是object类型元素,存入值类型元素时会发生装箱操作,取出时需要拆箱,不仅影响性能,还可能在拆箱时因为类型不匹配抛出InvalidCastException异常。
  • 性能不如泛型集合:泛型集合List<T>在编译期就会检查元素类型,避免了装箱拆箱操作,同时类型更安全,是ArrayList的替代方案。

使用场景建议

如果是旧项目维护,可能会遇到ArrayList的使用场景,新项目开发时,如果元素类型统一,优先选择List<T>;如果确实需要存储不同类型的元素,再考虑使用ArrayList,同时要注意做好类型判断,避免拆箱时的类型错误。

注意:在代码中使用HTML相关标签名称时,需要按照规范转义,比如提到<input>标签时,要写成转义后的形式,避免被解析为HTML元素。

当需要突出显示代码术语时,可以使用<code>标签,比如<code>Add()</code>方法,这里的<code>标签本身不需要转义,内部内容会正常显示。

C#ArrayList集合动态数组修改时间:2026-07-05 03:54:21

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。