c#中Array和ArrayList

学习了一位博友的文章,记录一下

http://www.cnblogs.com/agassi001/archive/2006/05/31/413540.html

 

          //C#语言是完全面向对象的,所以在C#中的数组也是对象,
//实际上就是Array类的实例,Array类的使用可以说是使用最频繁的,只是大家在使用时都没太在意,如在创建数组int[]时实际上就创建了一个Array类对象的实例。
//Array testArray2 = new int[3];
// [Array和ArrayList的区别]
//#1. Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大小),而ArrayList可以只是先声明。
//如:
// Array array = new int[3];
// 或 int[] array = {1,2,3};
// 或 ArrayList myList = new ArrayList();
//这些都是合法的,而直接使用 int[] array;是不行的。
//#2. Array只能存储同构的对象,而ArrayList可以存储异构的对象。
//同构的对象是指类型相同的对象,若声明为int[]的数组就只能存放整形数据,string[]只能存放字符型数据,但声明为object[]的数组除外。
//而ArrayList可以存放任何不同类型的数据(因为它里面存放的都是被装箱了的Object型对象,实际上ArrayList内部就是使用"object[] _items;"这样一个私有字段来封装对象的)
//#3 在CLR托管对中的存放方式
//Array是始终是连续存放的,而ArrayList的存放不一定连续。
//#4 初始化大小
//Array对象的初始化必须只定指定大小,且创建后的数组大小是固定的,
//而ArrayList的大小可以动态指定,其大小可以在初始化时指定,也可以不指定,也就是说该对象的空间可以任意增加。
//#5 Array不能够随意添加和删除其中的项,而ArrayList可以在任意位置插入和删除项。


//ArrayList底层利用数组实现,遍历效率高,中间插入删除效率低

//[Array和ArrayList的相似点]
//#1 都具有索引(index),即可以通过index来直接获取和修改任意项。
//#2 他们所创建的对象都放在托管堆中。
//#3 都能够对自身进行枚举(因为都实现了IEnumerable接口)。


//还有就是ArrayList的容量会自动增加

object[] testArray = new Array[3];
testArray[0] = 1;
testArray[1] = 2;
testArray[2] = "a";

int[] testIA=new int[3];
testIA[0] = 1;
testIA[1] = 2;
testIA[2] = 3;
//testIA[2] = "a"; 报错

ArrayList testAList = new ArrayList();
testAList.Add("a");
testAList.Add(2);
testAList[2] = 1;

Array testArray2 = new int[3];

 

 

 

posted on 2011-11-06 22:01  MichaelZhao  阅读(398)  评论(0编辑  收藏  举报

导航