Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字节数组复制到C中的另一个字节数组#_C#_Arrays - Fatal编程技术网

C# 将字节数组复制到C中的另一个字节数组#

C# 将字节数组复制到C中的另一个字节数组#,c#,arrays,C#,Arrays,有两个字节数组,其中填充了不同的值 byte[] Array1 = new byte[5]; byte[] Array2 = new byte[5]; 然后,我需要Array1获得与Array2完全相同的值 通过键入Array1=Array2我将只设置引用,而不会复制值 解决办法可能是什么 编辑: 所有答案都很好,所有解决方案都有效。第一个解决方案中的代码对于我的特定情况看起来更具描述性 Array1=Array2.ToArray() 及 Array1.CopyTo(Array2,0) 以及

有两个字节数组,其中填充了不同的值

byte[] Array1 = new byte[5];
byte[] Array2 = new byte[5];
然后,我需要
Array1
获得与
Array2
完全相同的值

通过键入
Array1=Array2
我将只设置引用,而不会复制值

解决办法可能是什么

编辑:

所有答案都很好,所有解决方案都有效。第一个解决方案中的代码对于我的特定情况看起来更具描述性

Array1=Array2.ToArray()

Array1.CopyTo(Array2,0)

以及

块复制(Array2,0,Array1,0,5)


林克提供的一个解决方案

Array1 = Array2.ToArray();
编辑:在使用此Linq调用之前,不需要为Array1分配空间。
Array1
的分配在
ToArray()中完成。下面是更完整的示例

byte[] Array2 = new byte[5];
// set values for Array2
byte[] Array1 = Array2.ToArray();

调查。可能存在No的重复,第一个数组应与第二个数组完全相同。但它不应该与它有任何联系。不应该是一个指针。“两个答案都是好的,两个解决方案都有效”。以及第一条注释中提到的
Buffer.BlockCopy
,任何重载,这都是一个相当不错的解决方案,但是由于OP已经分配了目标数组,并且说,“我只是设置引用,我不复制值”,然后,我认为在您的回答中指出您正在创建一个新引用,而不是将值复制到预先分配的数组是明智的。我会这样做,OP中的语句“通过键入
Array1=Array2
我只是设置引用,我不复制值”我认为是试图说数组引用已被复制,并且这些值本身没有重复。在他后来的评论“但它不应该与它有任何联系”中似乎也是如此,我认为这是试图说
Array1[0]=(byte)1
不会对
Array2
中的值产生任何影响。是的,我同意。这就是为什么我认为你的答案是一个相当简洁的解决方案。我只是认为OP可能需要更深入地理解一些机制。据我所知,
Array2.ToArray()
分配一个新数组。如果
Array1=Array2.ToArray()执行多次,例如在for循环中?这些分配是否保留在内存中?
Array1.CopyTo(Array2, 0);