详解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# 获取系统DPI缩放比例以及分辨率大小

    一般方法 System.Windows.Forms.Screen类 // 获取当前主屏幕分辨率 int screenWidth = Screen.PrimaryScreen.Bounds.Width; int screenHeight = Screen.PrimaryScreen.Bounds.Height; // 获取指定屏幕分辨率 Screen seco…

    C# 2023年5月1日
    00
  • ASP.NET常用小技巧

    ASP.NET常用小技巧攻略 简介 ASP.NET是一个非常强大的Web框架,拥有很多小技巧可以节省开发时间并提高效率。本攻略将介绍一些ASP.NET的常用小技巧,可以帮助开发者更好的应用这个框架进行Web应用程序开发。 1. 锐利如刀的@ 符号 在ASP.NET中,@符号有多个用途,最常见的就是作为内嵌代码中的语句分隔符,但是他还有一些更强大的用途。 1.…

    C# 2023年6月3日
    00
  • 如何用C#验证IP是否为局域网地址

    首先,我们需要了解什么是IP地址和局域网地址。 IP地址是Internet Protocol Address的缩写,也就是网络协议地址的意思。它是用来标识网络上的设备的数字串,类似于人类的身份证号码。而局域网地址则是指在局域网内的设备所使用的地址范围。通常局域网地址以“192.168”或“10.”开头。 下面是使用C#语言验证IP地址是否为局域网地址的代码:…

    C# 2023年6月6日
    00
  • RDIF.vNext全新低代码快速开发框架平台发布

    1、平台介绍 RDIF.vNext,全新低代码快速开发集成框架平台,给用户和开发者最佳的.Net框架平台方案,为企业快速构建跨平台、企业级的应用提供强大支持。 RDIF.vNext的前身是RDIFramework框架,RDIF(Rapid develop Integrate Framework, vNext代表全新下一代),全新设计,全新开发,代码量减少50…

    C# 2023年4月18日
    00
  • c# Winform 程序自动更新实现方法

    下面是一个标准的markdown格式文本,详细讲解“c# Winform 程序自动更新实现方法”的完整攻略,包含两条示例说明。 c# Winform程序自动更新实现方法 一、背景 随着软件应用的不断发展,越来越多的软件需要定期更新以保证其功能和性能的优化。在Winform程序中,自动更新是一项常见而且必要的功能,因此掌握Winform程序自动更新的实现方法对…

    C# 2023年6月6日
    00
  • ASP.NET加密口令的方法实例

    以下是关于”ASP.NET加密口令的方法实例”的完整攻略: 1. 什么是ASP.NET加密口令 ASP.NET加密口令是为了提高系统的安全性,在ASP.NET中使用的一种加密方法。通过这种方法,我们可以将用户的口令加密为一段不可逆的字符串,防止用户的口令被恶意获取和使用。 2. ASP.NET加密口令的方法实例 2.1 加密 使用ASP.NET加密口令的方法…

    C# 2023年6月3日
    00
  • C# Linq的Distinct()方法 – 返回序列中不同的元素

    当我们需要在C#中从一个集合中筛选出不同的元素,Linq的Distinct()方法就非常适用了。在这里,我将为您提供C#Linq的Distinct()方法的完整攻略,包括定义、返回值、语法、使用方法和示例。 定义 Distinct()方法是Linq用于从集合中返回不同元素的方法之一。该方法基于对象的值,比较并取消重复出现的元素。不同于其他返回元素的方法,Di…

    C# 2023年4月19日
    00
  • 常用类之TCP连接类-socket编程

    下面是关于“常用类之TCP连接类-socket编程”的完整攻略。 1. TCP连接类介绍 在进行socket网络编程时,我们需要使用到TCP连接类,该类被封装成了Python的socket库。它是一种基于客户机/服务器模式的、可靠的、面向连接的、传输层通信协议,它在应用层和TCP/IP协议族的传输层之间进行数据传输。使用TCP连接类,我们可以轻松实现实时通信…

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