您的位置:首页 > 编程语言 > C#

C#学习笔记之三:数组

2013-11-13 19:52 267 查看
命名空间:using System;

1.数组有几种类型?分别如何声明和初始化?

(1)一维数组


int[] array = new int[5]{1,2,3,4,5};




int[] array;

array = new int[5]{1,2,3,4,5};

(2)矩形数组


int[ , ] array2d = new int[2, 2]{
{1,2} , {3,4}
};

int[ , , ] array3d = new int[2, 3, 4]{

{ {1,2,3,4},
{5,6,7,8},
{9,10,11,12}
},

{ {13,14,15,16},
{17,18,19,20},
{21,22,23,24}
}

};

(3)交错数组


int[][] array = int[2][]{

new int[]
{1,2,3},

new int[]
{4,5,6,7,8}

};

2.遍历数组:foreach



foreach (int item in array)

{

//Do something

}

3.数组协变

可以将继承类对象添加到父类对象数组中。

4.浅复制和深复制

当数组对象是引用对象时,浅复制和深复制是不一样的。同时,浅复制和深复制是所有对象所具有的的特征。
(1)浅复制
新数组仍引用原对象,即两个数组对对象所做的修改会互相反映出来。
使用Clone和CopyTo函数实现的是浅复制。
(2)深复制
新数组维护自己的新对象,一个数组对象的改变不会影响到另一个。

需要自己实现深复制的功能。使用序列化/反序列化方法。
A.首先,引入命名空间


using System.Runtime.Serialization.Formatters.Binary;

B.然后,将需要实现深复制的数据类型标示为


[Serializable]

class ArrayType

{

//Class Implement;

}

C.其次,将数组对象进行序列化


MemoryStream s = new MemoryStream();

BinaryFormatter f = new BinaryFormatter();

f.Serialize(s, array);

s.Position = 0;

D.最后,对复制对象采用反序列化


arrayDeepCopy = (ArrayType[])f.Deserialize(s);​

就完成了深复制功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: