当然不能任何情况都相互替换,否则为什么要2者共存呢:) 在数据的读取方面它们几乎是相同的,而List<T>比T[]要多了很多修改集合的操作,所以如果你希望在定义后修改集合的大小,那么应当使用List<T>,如果你期望的是一个固定大小的容器,那么你应当使用T[]。比如你写一个方法(可能会被其他程序员使用),根据城市查询员工,这个方法的签名可能是这样:
public Employee[] GetEmployees(string city)
在这里,你返回了一个Employee[]数组,而不是List<Employee>,用来向你的调用者(其他程序员)传达一个信息:这个返回的员工集合不应当被修改(或者说,你对它的集合修改没有什么意义)。比如说你又写了一个功能函数:过滤掉一个employee集合里的city为“上海”的employee,那么签名可能是:
public void FilterEmployees(List<Employee> employees, string city)
这个函数签名向外界调用者传达了一个信息,就是employees这个集合是会被增/删元素的。
其实以上都是很细节了,在目前中国的大多数程序中,可以说T[] 和 List<T>都是混用的,很多人写的时候压根没考虑那么多,上手就是List<T>,甚至有人认为T[]已经过时了,应当用List<T>来代替。这些细节其实还是要注意一下的好,程序员要专业。
他们有性能方面的差别吗?比如说增删改的时候性能是一样的吗?
@梧桐树: 一样,List<T>内部存储数据还是用的T[],你可以去看源码。
是数组吧?
个人觉得,List比较的灵活,数组:数据结构中的顺序表,索引访问比较的快,List,这个数据结构中的单链表,操作数据还是很方便的。添加,删除等操作,都是很方便,数据的长度可以使无限大,不像数组,必须要在最开始的时候定义它的大小
你要进行增删改的话,还是用List<T>吧。。
实际使用时, 优先考虑数组,如果数组不方便再考虑其它的
本人list使用的多
List不用初始化大小,数组需要
楼主可以看看泛型的优缺点,相对于arraylist数组来说,毕竟都是集合,对数据的操作大的有两个
1.类型安全性。 你可以向arraylist中添加object类型的数据,当然就包含int /string类型。编译器在编译时很正常不会报错,但是在迭代该集合时,就出问题了。而泛型list则在添加数据时,编译就能感知数据的类型问题。
2.就是效率问题。arraylist在添加到 ArrayList 中的任何引用或值类型都将隐式地向上强制转换为 Object。如果项是值类型,则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作。强制转换以及装箱和取消装箱操作都会降低性能;在必须对大型集合进行循环访问的情况下,装箱和取消装箱的影响非常明显。