C#之byte[]数组之复制

  • Post author:
  • Post category:其他


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

);



版权声明:本文为qq_35980294原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。