在c#中复制数组

时间:2015-08-21 14:19:47

标签: c# arrays

我正在尝试在C#中复制一个数组。 第一个数组的定义是: byte [] [] a包含8个数组,每个数组大小为8192个字节。 目标数组是大小为8192 * 8的1d数组

File file = new File("C:\\Users\\Felix\\Desktop\\cmploop.png");

其中b是目标数组。但是我一直在获取Object必须是一个基元数组。有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:9)

那是因为你没有一个值数组,你有一组数组值的引用。

byte[][]类型与byte[,]类型不同。第一个是数组(也称为锯齿状数组),第二个是二维数组。

您需要自己复制每个数组:

for (int i = 0; i < a.Length; i++) {
  Buffer.BlockCopy(a[i], 0, b, 8192 * i, 8192);
}

答案 1 :(得分:1)

这是因为你的第一个输入数组不是基元数组。它是一个byte[]数组的数组。

Buffer.BlockCopy(a(array of byte[]) , 0, b (array of byte),0,8192*8)

修正:

Buffer.BlockCopy(a.SelectMany().ToArray(), 0, b, 0, 8192*8)

但说实话,我认为你有同样的结果:

var b = a.SelectMany().ToArray();