C# 用c语言复制数组#

C# 用c语言复制数组#,c#,arrays,C#,Arrays,我正在尝试复制C#中的数组。 第一个数组的定义是: 字节[][]a,包含8个数组,每个数组的大小为8192字节。 目标阵列是大小为8192*8的1d阵列 Buffer.BlockCopy(a,0,b,0,8192*8) 其中b是目标阵列。然而,我不断得到的对象必须是一个基元数组。有人知道为什么会发生这种情况吗?这是因为你没有一个单一的值数组,你有一个对值数组的引用数组 byte[][]类型与byte[,]类型不同。第一个是数组数组(也称为锯齿数组),而第二个是二维数组 您需要单独复制每个阵列:

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

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

其中b是目标阵列。然而,我不断得到的对象必须是一个基元数组。有人知道为什么会发生这种情况吗?

这是因为你没有一个单一的值数组,你有一个对值数组的引用数组

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

您需要单独复制每个阵列:

for (int i = 0; i < a.Length; i++) {
  Buffer.BlockCopy(a[i], 0, b, 8192 * i, 8192);
}
for(int i=0;i
这是因为您的第一个输入数组不是原语数组。它是一个由
字节[]
数组组成的数组

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

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

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