一个表格道破c#中数组、ArrayList以及泛型List三者的区别

数组、ArrayList以及泛型List之间的区别?

一、数组

1、优点:

​ 1、数组在内存中时连续存储的,所以它的索引速度是非常快的

​ 2、赋值和修改也是很简单的

2、缺点:

​ 1、在数组的两个数据间插入数据很麻烦

​ 2、在声明数组的时候必须给定指定的数组长度。如果说数组的长度过长,会造成内存浪费;过短会造成数据溢出的错误。所以说在声明数组时我们并不清楚数组的长度,这就变的很棘手了。

​ 3、在声明数组的时候必须给定指定的数据类型。

			  string[] a = new string[2];//定义string类型的数组,并分配2个空间
			 //在数组中添加数据
              a[0] = "A";
              a[1] = "B";
			//修改数据
              a[0] = "a1";
              for (int i = 0; i < a.Length; i++)//通过for循环打印数组中的值
              {
                  MessageBox.Show(a[i]);
              }

二、ArrayList

1、什么是ArrayList?

​ ArrayList是.Net Framework提供的用于数据存储和检索到专用类,它是命名空间System.Collections下的一部分。

2、优点:

​ 1、声明时不需要指定长度,因为它的大小是按照其中存储的数据来动态扩充与收缩的

​ 2、可以添加、插入、修改和移除数据

​ 3、可以存储任意类型的数据,因为在存储数据的时候它会把这些数据当作object类型来处理,所以这也是它的不足之处

3、缺点:

​ ArrayList不是类型安全的。为什么这么说?

​ 因为将ArrayList中的数据拿出来使用的时候需要通过数据类型转换,否则会出现类型不匹配的错误。

​ 例如ArrayList中存储了多个不同数据类型的数据时,当我们想用ArrayList中的数据来处理某些问题的时候,就必须通过多次的类型转换才能拿出来。这就存在了装箱与拆箱的操作,会带来很大的性能损失。

			ArrayList a = new ArrayList();
         	 //添加数据
          	a.Add(0);
            a.Add("hellow");
            a.Add(0.07);
            //修改数据
            a[0] = 1;
            a.RemoveAt(0);//移除数据
            a.Insert(1, "didi");//在第2个数据前插入数据
            a.Clear();//移除所有元素
            for (int i = 0; i < a.Count; i++)//通过for循环打印ArrayList中的数据
            {
                MessageBox.Show(a[i].ToString()+"");//将数据类型转换为string类型
            }
             MessageBox.Show((int)a[0]+"");//数据类型转换,打印a[0]的值

4、什么是装箱和拆箱?

(1)装箱:就是将值类型的数据打包到引用类型的实例中

//比如说将int类型的值赋给object类型a
int i=123;
object a=(object)i;

(2)拆箱:就是从引用类型中提取值类型

//比如将object对象a的值赋给int类型的变量i
object a=123;
int i=(int)a;

注:装箱和拆箱的过程是很耗损性能的

三、泛型List

​ ArrayList拥有的优点泛型List都有(除了不能存储所有类型的数据)。

​ List在定义的时候必须声明一个类型的数据类型。

			List<int> a = new List<int>();//实例化泛型List
            a.Add(1);
            a.Add(2);
            //a.RemoveAt(0);//移除指定的索引元素
            // a.Remove(1);//删除第一个元素
            // a.Clear();//清空所有元素
            a.Insert(0, 3); //在指定元素前插入一个元素
            for (int i = 0; i < a.Count; i++)
            {
                MessageBox.Show(a[i] + "");
            }

四、总结

数组ArrayList泛型List
定义时需要声明数据类型和长度不需要只需要声明数据类型
可以添加和修改数据添加、修改、移除添加指定的数据、移除所有元素添加、修改、移除添加指定的数据、移除所有元素
一个数组只能容纳一种数据类型容纳所有数据类型,但是取出来的时候要通过数据类型转换一个泛型List只能容纳一种数据类型
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值