详解c#中Array,ArrayList与List的区别、共性与相互转换

详解c#中Array,ArrayList与List的区别、共性与相互转换

区别

  1. Array是定长的,一旦分配完内存大小,就不能再改变,而ArrayList、List是动态长度数组。
  2. Array中只能存储单一数据类型,而ArrayList、List则可以存储不同类型的数据。
  3. ArrayList内部存储对象,每次使用都需要进行拆箱和装箱操作,而List则是类型安全的,不需要进行拆箱和装箱操作。
  4. Array性能优于ArrayList、List,这是由于Array存储的是静态类型,内存空间是连续分配的,而ArrayList、List需要额外的内存空间来存储元数据,这种开销很大程度上增加了操作的耗时。

共性

  1. 都是可以存储一组数据的数据结构。
  2. 都可以通过下表进行访问,下标从0开始计数。
  3. 都可以使用foreach遍历。
  4. 都是支持泛型的。

相互转换

Array和ArrayList的相互转换

// 将Array转换为ArrayList
int[] arr = {1, 2, 3, 4};
ArrayList arrayList = new ArrayList(arr);

// 将ArrayList转换为Array
int[] anotherArr = (int[])arrayList.ToArray(typeof(int));

Array和List的相互转换

// 将Array转换为List<T>
int[] arr = {1, 2, 3, 4};
List<int> list = new List<int>(arr);

// 将List<T>转换为Array
int[] anotherArr = list.ToArray();

示例说明

示例1:在计算学生的平均成绩时,使用List实现

代码示例如下:

List<int> grades = new List<int>();
grades.Add(85);
grades.Add(92);
grades.Add(78);
grades.Add(90);

int sum = 0;
foreach (int grade in grades) {
    sum += grade;
}

double average = (double)sum / grades.Count;
Console.WriteLine("The average grade is: " + average);

示例2:使用Array实现冒泡排序

代码示例如下:

int[] arr = {5, 3, 8, 4, 2};
for (int i = 0; i < arr.Length - 1; i++) {
    for (int j = 0; j < arr.Length - i - 1; j++) {
        if (arr[j] > arr[j + 1]) {
            int temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}

foreach (int num in arr) {
    Console.Write(num + " ");
}

以上就是c#中Array、ArrayList和List的区别、共性和相互转换的详细讲解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解c#中Array,ArrayList与List的区别、共性与相互转换 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 深入理解C# DateTime日期格式化

    深入理解C# DateTime日期格式化 什么是C#的DateTime类型? 在C#中,日期和时间可以使用DateTime类型来表示。DateTime类型包含日期和时间的值,并提供了许多方便的功能,例如计算日期之间的差异、比较日期、格式化日期等等。 日期格式化 在C#中,我们可以使用ToString方法来将DateTime类型的日期转换为字符串,同时我们也可…

    C# 2023年6月1日
    00
  • C#通过windows注册表获取软件清单的方法

    下面是详细的攻略: 步骤一:使用RegistryKey类连接Windows注册表 首先,我们需要使用C#中的RegistryKey类连接Windows注册表,RegistryKey提供了Windows注册表中的最高级别节点,我们可以在这些节点中查找我们需要访问的信息。下面是使用RegistryKey类连接Windows注册表的基本代码: using Micr…

    C# 2023年6月7日
    00
  • asp.net 用户控件读取以及赋值

    让我们来详细讲解一下如何读取和赋值 ASP.NET 用户控件。 什么是 ASP.NET 用户控件? ASP.NET 用户控件是由 ASP.NET 页面和服务器控件组成的。它们是可重用的模块,可以在多个页面中使用,并且可以像其他服务器控件一样自定义和配置。用户控件通常用于在多个页面中使用相同的用户界面元素。 如何创建 ASP.NET 用户控件? 要创建 ASP…

    C# 2023年6月3日
    00
  • C#适用于like语句的SQL格式化函数

    当我们在使用SQL语句查询一些字符串字段时,经常使用like语句进行模糊匹配。而在使用C#编写的程序中,我们通常需要将查询结果装载到某个类中,以便于后面的数据处理。这时,如果采用了字符串拼接的方式生成SQL语句,不仅不够安全,而且也不方便后续的操作,此时我们就需要借助“C#适用于like语句的SQL格式化函数”来处理SQL语句。 Step 1. 安装Dapp…

    C# 2023年6月7日
    00
  • C#自定义特性(Attribute)详解

    我来详细讲解一下“C#自定义特性(Attribute)详解”的完整攻略。 什么是C#自定义特性(Attribute) 在C#中,特性(Attribute)是一种可用于向类、方法、属性等程序实体添加元数据的语言功能。它可以使得代码更加灵活、可读性更高。 C#自定义特性(Attribute)是程序员用来自定义特性的机制。例如,我们可以自定义自己的Attribut…

    C# 2023年6月7日
    00
  • 详细介绍C# 泛型

    详细介绍C#泛型 什么是泛型? 泛型是C#语言中的一种数据类型,它允许我们写出能够适用于多种数据类型的代码。泛型作用于类、接口、方法等,可以大大提高代码的复用性和可读性。 泛型的语法与用法 泛型类 泛型类可以适用于多种数据类型,我们可以通过类名后加尖括号传入数据类型,例如: public class MyList<T> { private T[]…

    C# 2023年5月15日
    00
  • C#实现简单成绩管理系统的完整步骤

    为了让大家更容易理解,我将这个攻略分为以下几个步骤: 步骤一:搭建环境 我们的第一步是搭建C#开发环境。首先需要安装Visual Studio或者其他的C#IDE,比如Rider等。安装完成后,在IDE中创建一个新的控制台应用程序项目。 步骤二:创建数据结构 我们需要为成绩管理系统创建一个数据结构,用于存储学生姓名和成绩。我们可以使用C#中的类来实现这个数据…

    C# 2023年6月6日
    00
  • 最全.NET Core 、.NET 5、.NET 6和.NET 7简介和区别

    .NET是一种用于构建多种应用的免费开源开发平台,可以使用多种语言,编辑器和库开发Web应用、Web API和微服务、云中的无服务器函数、云原生应用、移动应用、桌面应用、Windows WPF、Windows窗体、通用 Windows平台 (UWP)、游戏、物联网 (IoT)、机器学习、控制台应用、Windows服务。框架主要包括:.NET Framewor…

    C# 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部