• C# Array和ArrayList有什么区别


    在C#中,ArrayArrayList是集合类型,用于存储一组元素,但它们之间有几个关键区别:

    1. 类型安全:

      • Array是类型安全的,意味着它只能存储一种特定类型的元素。例如,一个int[]数组只能存储int类型的元素。
      • ArrayList不是类型安全的,可以存储任何类型的对象,即它可以存储object类型的元素。因此你可以将任何类型的对象添加到ArrayList中,这在编译时不会报错,但可能在运行时引发类型错误。
    2. 性能:

      • Array由于是类型安全且固定大小的,通常在性能上比ArrayList更优,尤其是在类型转换和装箱操作方面。
      • ArrayList在添加元素时可能需要动态扩展其大小,这个过程涉及到内存分配和数组复制,可能会导致性能开销。
    3. 大小:

      • Array的大小在创建时被确定,之后不能改变。
      • ArrayList的大小是动态的,可以随着元素的添加和移除而增长或缩小。
    4. 功能和方法:

      • Array提供了基础的数组操作功能,例如长度查询、索引访问和迭代等。
      • ArrayList提供了更多的集合操作方法,如添加、删除、查找、插入和排序等。
    5. 泛型支持:

      • Array支持泛型,但通常以非泛型的形式使用,例如int[]string[]等。
      • ArrayList不支持泛型。如果你需要一个支持泛型的动态数组,应该使用List,它允许你创建一个类型安全的列表,例如ListList
    6. .NET版本:

      • Array一直是.NET Framework的一部分。
      • ArrayList是早期.NET版本中的非泛型集合。自从.NET 2.0引入了泛型之后,List通常被推荐使用,因为它提供了类似ArrayList的功能,同时增加了类型安全和更好的性能。

    在实际编程中,推荐尽可能使用泛型集合,例如List,因为它们提供了类型安全和其他性能优势。ArrayList主要是为了向后兼容保留的,新的代码中应避免使用它。

    下面分别给出ArrayArrayList的简单示例。

    首先是一个Array的示例:

    using System;
    
    class ArrayExample
    {
        static void Main()
        {
            // 创建一个int类型的数组,并初始化
            int[] intArray = new int[5] { 1, 2, 3, 4, 5 };
    
            // 遍历数组并打印元素
            for (int i = 0; i < intArray.Length; i++)
            {
                Console.WriteLine(intArray[i]);
            }
    
            // 修改数组的第一个元素
            intArray[0] = 10;
            
            // 打印修改后的第一个元素
            Console.WriteLine("Updated first element: " + intArray[0]);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    接下来是一个ArrayList的示例:

    using System;
    using System.Collections;
    
    class ArrayListExample
    {
        static void Main()
        {
            // 创建一个ArrayList
            ArrayList arrayList = new ArrayList();
    
            // 添加元素
            arrayList.Add(1);
            arrayList.Add("two");
            arrayList.Add(3);
            arrayList.Add(4.5);
    
            // 遍历ArrayList并打印元素
            foreach (object obj in arrayList)
            {
                Console.WriteLine(obj);
            }
    
            // 删除第一个元素
            arrayList.RemoveAt(0);
    
            // 打印删除元素后的结果
            Console.WriteLine("After removal:");
            foreach (object obj in arrayList)
            {
                Console.WriteLine(obj);
            }
    
            // 修改第一个元素,需要先进行类型转换
            // 由于ArrayList不是类型安全的,我们需要确保执行正确的类型转换
            if (arrayList[0] is string)
            {
                arrayList[0] = "two updated";
            }
    
            // 打印修改后的元素
            Console.WriteLine("Updated first element: " + arrayList[0]);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    在这两个示例中,我们看到了ArrayArrayList的基本操作。Array示例中我们创建了一个整型数组,并初始化和修改了它的元素。在ArrayList示例中,我们添加了不同类型的元素,演示了它的非类型安全性,并且展示了如何添加、移除和修改元素。注意,使用ArrayList时,我们在修改或读取元素之前,可能需要进行显式的类型转换。

  • 相关阅读:
    深度学习之基于Yolov5人体姿态摔倒识别分析报警系统(GUI界面)
    企业如何做源代码保护措施
    泰迪智能科技大模型数据智能实验室
    jmeter 得使用线程租得详细介绍
    策略设计模式
    反射填充详解ReflectionPad2d(padding)
    QScrollBar滚动条、QSlider滑块、 QDial表盘
    爬虫模块—每日行情数据/交易日期/公司信息获取(01)
    基于Vue+SpringBoot的超市账单管理系统 开源项目
    Android开发——Jetpack Compose的使用
  • 原文地址:https://blog.csdn.net/yao_hou/article/details/134484905