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);