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