在ArrayList眼中所有的元素类型都是Object,所以ArrayList不是类型安全的。
ArrayList集合在使用值类型数据时,其实就是在不断地做装箱和拆箱工作,需进行大量的计算。
装箱:把值类型打包到Object引用类型的一个实例中
拆箱:指从对象中提取值类型
例如:
foreach(Animal item in arrayAnimal)
在这行代码执行(拆箱)时,只会输出Animal类型的对象。如果在此时ArrayList中有其它类型的对象,在运行(Run)过程中程序就会报错。此时的代价就是要么跳出、要么执行异常处理。
解决方法:
使用泛型(可以规定元素容纳类型的类)来解决问题。泛型使得数据有了规定的类型,那么在进行装箱操作时就进行了检验,使其按照规定的类型装箱。避免的上述ArrayList类型的安全问题和装箱拆箱的性能问题。
List类就是ArrayList类的泛型的等效类。
例如:
List<Animal> arraylist=new List<Animal>();