Buffer.BlockCopy对双数组不起作用?

时间:2015-06-17 20:03:11

标签: .net

以下代码

double[] src = new[] { 1d, 1d, 2d };
double[] dst = new[] { 0d, 0d, 0d };
Buffer.BlockCopy(src, 0, dst, 0, 3);
for (int i = 0; i < 3; i++)
{
    Console.Write(src[i] + " ");
}
Console.WriteLine();
for (int i = 0; i < 3; i++)
{
    Console.Write(dst[i] + " ");
}
Console.WriteLine();

输出

1 1 2 
0 0 0

我预计两条线上的值相同吗?

https://dotnetfiddle.net/AH2ebt

1 个答案:

答案 0 :(得分:2)

您告诉BlockCopy复制3 字节。你想要

Buffer.BlockCopy(src, 0, dst, 0, 24);

Buffer.BlockCopy(src, 0, dst, 0, 3 * sizeof(double));

...为了复制所有24个字节。 Buffer.BlockCopy的第五个参数记录为:

  

要复制的字节数。

要复制的数组元素的数量。