1、for循环实现复制
byte[] data = new byte[]{0,1,2,3,4,5,6,7,8,9};
byte[] data1 = new byte[data.length];
for(int i=0;i<data1.length;i++)
{
data1[i] = data[i];
}
2、Array.Copy实现复制
byte[] data = new byte[]{0,1,2,3,4,5,6,7,8,9};
byte[] data1 = new byte[data.length];
Array.Copy(data,data1,data.length);
3、Clone实现复制
byte[] data = new byte[]{0,1,2,3,4,5,6,7,8,9};
byte[] data1;
data1 = (byte[])data .Clone()
4、Buffer.BlockCopy实现复制
byte[] srcArray = new byte[] { 0x01, 0x02, 0x03, 0x04 };
byte[] dstArray = new byte[srcArray.Length];
Buffer.BlockCopy(srcArray, 0, dstArray, 0, srcArray.Length);
5、Array.ConstrainedCopy 实现复制
byte[] srcArray = new byte[] { 0x01, 0x02, 0x03, 0x04 };
byte[] dstArray = new byte[srcArray.Length];
Array.ConstrainedCopy(srcArray, 0, dstArray, 0, srcArray.Length);
- 1,Array.Copy在CLR处理机制中最灵活,最强大,可装箱,拆箱复制,可加宽CLR基元类型,可内部判断实现了IFarmattable接口的兼容转换,当然这种强大方式必然会带来一定的性能损失。
- 2,Array.ConstrainedCopy 对复制要求严格,只能是同类型或者源数组类型是目标类型的派生元素类型,不执行装箱,拆箱,向下转换
- 3,Buffer.BlockCopy 则从本质上以字节为复制单位,这在底层语言C,C++的处理优势上,同理,效率之高可以理解。 当然如果对性能要求不高,Copy足矣,毕竟在上千次复制下,三者基本没消耗多少时间。使用时可根据项目需求斟酌选择!