原理

Array数组是包含n个相同类型的变量,这些变量可以通过索引来访问,在内存中保存的是连续的空间,一但声明变量长度是不可更改的。

int[] array = new int[10];//长度固定,超出长度读取会报错。

ArrayList 你解决array数组不可变的问题,本质上是对array的封装,可以动态改变数组的,他还有添加删除功能,也能通过索引访问,使用比较灵活,它在不变的情况下内存空间是连续的c#list,但是在不同时刻不能期待他不能在同一块内存。

    //这是开源的arrylist构造代码片段,里面new了个object数组     public ArrayList(ICollection c)        {            ArgumentNullException.ThrowIfNull(c);            int count = c.Count;            if (count == 0)            {                _items = Array.Empty();            }            else            {                _items = new object[count];                AddRange(c);            }        } //感兴趣可以看看源码: // https://github.com/dotnet/runtime/blob/215b39abf947da7a40b0cb137eab4bceb24ad3e3/src/libraries/System.Private.CoreLib/src/System/Collections/ArrayList.cs

为啥不推荐使用?

由于声明后默认是包含若干个object,可以添加任何类型,由于类型可以不同,在使用的时频繁的装箱拆箱,不建议使用,如果长度可控,建议使用下标数组,以提高性能。

另外在.NET 2.0微软推出泛型,主要解决固定类型问题,类型固定的用Listc#list,而arrayList不固定,List兼容了arrayList添加删除等功能,完美的替代了ArrayList,并且不存在拆箱装箱的问题。

 List a=new List(); //List中的T是指定的类型,不存在同一变量下

什么时候合适用ArrayList呢?

当List可以用ArrayList,List运行时泛型不存在,List原理上是不等于ArrayList的。

c# list orderby desc_c# list 排序_c#list

结语

如果你有不同建议,欢迎留言讨论。

参考:

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688