C#之byte[]数组之复制

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值