C#学习笔记之三:数组

命名空间: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);
就完成了深复制功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值