C#中数组,ArrayList和List三者的区别

2024-12-20 04:01:49
推荐回答(1个)
回答1:

数组和List很常用。。。ArrayList会严重损耗性能,除非无法避免,否则能不用就别用。。
三者之中,数组的性能是最好的,但数组必须在声明的时候确定长度。。。一旦声明之后,长度就无法改变。。而实际开发中总有一些情况,让我们必须改变长度。。。所以才有ArrayList和List。。
ArrayList就像JAVASCRIPT里的数组一样,不需要考虑变量类型,所有类型都可以无脑装进来。。。。其实就是无论什么类型,都在装入的时候,被自动转换成了Object类型。。由于object是一切类型的父类,所以ArrayList里面什么都能装。。看起来似乎挺省事,但其实缺点非常严重。。它会让C#静态语言的性能优势消失。。性能直接下降几十倍。。变得与JS等动态语言一样慢。。其实关键就是在于,每一次转换之间,都必须产生装箱和拆箱。。。这就是为什么JS,PYTHON,RUBY等语言,所开发出的程序执行效率都非常差的原因。。
List是泛型集合,这里涉及到泛型的概念,篇幅有限,无法说明,如果你学习了泛型,自然就会明白它的原理。。。总之List集合是个很棒的东西。。既不像ArrayList那样严重损失性能,又不像数组一样在定义时就限制了长度。。
一个最合理的原则。。。能用数组解决的问题,优先使用数组。。。数组无法满足的,就用List集合。。。不到万不得已,永远不要用ArrayList。。。