Nicholas-Chen

导航

C#回忆录七(数组)

有的时候我们需要操纵一组对象的集合,这个时候我们就需要用到数组。所有的数组都是从System.Array继承过来的。而System.Array又是从System.Object直接继承过来的。所有的数组都是引用类型。
我们可以用以下代码声明一个数组.
1 int[] m_intArray = new int[3];
2 m_intArray[1= 123;
以上声明了一个一维零基整型数组,它可以包含三个整数.我们现在可以通过它的下标操纵里面的数了.以上的实现过程如下:
第一: 第一行代码会在托管堆中分配内存,包含三个未装箱的整数,全部为默认值0,然后返回保存这些整数的内存块的地址,保存在m_intArray变量中.
第二:找到其中的一快内存,并把123赋给他.
我们还可以声明多维数组和锯齿数组.
1 int[,] m_twoDArray = new m_twoDArray[2,2];//两维的整型数组.
2 int[][] m_array = new int[3][];//创建了元素为整型数组的数组. 
我们可以对数组中的元素做集体转型.如果源数组中的元素到目标数组中的元素可以做隐式转型,则数组也可以.
但我们不能把元素为值类型的数组转为其他类型,但通过Array.Copy,我们可以通过创建一个新的数组来达到目的.在这里要注意Array.Copy执行的是浅拷贝.
1 int[] ia = new int[3];
2 object[] oa = new object[3];
3 Array.Copy(ia,oa,3);

 另外,数组总是以引用的方式传递的,当我们希望深拷贝是时,一种可行的方法是将每个对象序列化到MemoryStreram中,让后再反序列化,得到一个新的对象.
在我们创建对象时,如果在便一时不知道对象的元素类型,维数,或维数的上下限时,静态方法Array.CreateInstance非常有用.

posted on 2006-12-16 15:14  nicholas_chen  阅读(153)  评论(0)    收藏  举报