1、for循环复制byte数组。
1、Array.Copy 在CLR处理机制中最灵活,最强大,可装箱,拆箱复制,可加宽CLR基元类型,可内部判断实现了IFarmattable接口的兼容转换,当然这种强大方式必然会带来一定的性能损失。
2、Array.ConstrainedCopy 对复制要求严格,只能是同类型或者源数组类型是目标类型的派生元素类型,不执行装箱,拆箱,向下转换。
3、Buffer.BlockCopy 则从本质上以字节为复制单位,这在底层语言C,C++的处理优势上,同理,效率之高可以理解。
1、for循环复制数据
byte[] srcBys = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
byte[] disBys = new byte[srcBys.Length];
for (int i = 0; i < disBys.Length; i++)
{
disBys[i] = srcBys[i];
}
2、System.Array下的Array.Copy以及Array.CopyTo:
从指定的源索引开始,复制System.Array中的一系列元素,将它们粘贴到另一System.Array中(从指定的目标索引开始)。长度和索引指定为32位整数。
public static void Copy(Array sourceArray, Array destinationArray, int length);
public static void Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
将当前一维System.Array的所有元素复制到指定的一维System.Array中(从指定的目标System.Array索引开始)。索引指定为32位整数。
public void CopyTo(Array array, int index);
3、Array.ConstrainedCopy
从指定的源索引开始,复制 System.Array 中的一系列元素,将它们粘贴到另一 System.Array 中(从指定的目标索引开始)。保证在复制未成功完成的情况下撤消所有更改。
public static void ConstrainedCopy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
4、Buffer.BlockCopy
将指定数目的字节从起始于特定偏移量的源数组复制到起始于特定偏移量的目标数组。支持基础类型。
src:源缓冲区; srcOffset:src 中从零开始的字节偏移量;
dst:目标缓冲区;dstOffset:dst 中从零开始的字节偏移量;
count:要复制的字节数。
public static void BlockCopy(Array src, int srcOffset, Array dst, int dstOffset, int count);