2016-01-17 82 views
6

有两个填充了不同值的字节数组。将字节数组复制到C#中的另一个字节数组中

byte[] Array1 = new byte[5]; 
byte[] Array2 = new byte[5]; 

然后,我需要Array1得到完全相同的值Array2

通过键入Array1 = Array2我只是设置引用,这不会复制值。

什么可能是解决方案?

编辑:

所有答案都很好,所有解决方案的工作。来自第一个解决方案的代码在视觉上对我的特殊情况看起来更具描述性。

Array1 = Array2.ToArray();

Array1.CopyTo(ARRAY2,0);

以及

Buffer.BlockCopy(ARRAY2,0,数组1,0,5);

+3

更完整的示例调查['Buffer.BlockCopy'](https://msdn.microsoft.com/en-us/library/system.buffer.blockcopy%28v = vs.110%29.aspx)。 –

+3

[从字节数组中复制字节到另一个Byte数组在C#中的特定位置的可能的副本](http://stackoverflow.com/questions/26887421/copy-bytes-from-a-byte-array-to-a -specific-position-of-another-byte-array-in-cs) –

+0

不,第一个数组应该是第二个数组的精确副本。但它不应该以任何方式与它联系在一起。不应该是一个指针。 – acoder

回答

13

一个LINQ的溶液礼貌......

Array1 = Array2.ToArray(); 

编辑:你不需要使用这个LINQ的调用之前对数组1分配空间。 Array1的分配在ToArray()内完成。下面

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

这是一个相当整洁的解决方案,但因为OP已经分配了目标数组**,并且**已经说过,“我只是设置引用,我不会复制这些值”,那么我认为在您的答案中指出您要创建一个新引用并且不将值复制到预分配数组。 – Enigmativity

+1

会做,OP中的语句“通过输入'Array1 = Array2'我只是设置引用,我不复制值”我以为是试图说数组引用被复制,并且值本身是不重复。这在他后来的评论中似乎也是如此。“但是,它不应该以任何方式与它联系在一起。“,我认为这是一个尝试说'Array1 [0] =(byte)1'对'Array2'中的值没有任何作用 –

+1

是的,我同意这就是为什么我认为你的答案是一个相当整洁的解决方案。只是认为OP可能需要更深入地了解机制 – Enigmativity

相关问题