2016-01-17 23 views
6

Esistono due array di byte che vengono popolati con valori diversi.Copia array di byte in un altro array di byte in C#

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

Poi, ho bisogno Array1 per ottenere esattamente gli stessi valori di Array2.

Digitando Array1 = Array2 Vorrei semplicemente impostare i riferimenti, questo non avrebbe copiato i valori.

Quale potrebbe essere la soluzione?

EDIT:

Tutte le risposte sono buone e tutte le soluzioni funzionano. Il codice della prima soluzione sembra visivamente più descrittivo per il mio caso particolare.

Array1 = Array2.ToArray();

e

Array1.CopyTo (Array2, 0);

nonché

Buffer.BlockCopy (Array2, 0, Array1, 0, 5);

+3

Indagare [ 'Buffer.BlockCopy'] (https://msdn.microsoft.com/en-us/library/system.buffer.blockcopy%28v = vs.110% 29.aspx). –

+3

Possibile duplicato di [Copia byte da un array di byte in una posizione specifica di un altro array Byte in C#] (http://stackoverflow.com/questions/26887421/copy-bytes-from-a-byte-array-to-a -specific-position-of-another-byte-array-in-cs) –

+0

No, il primo array dovrebbe essere una copia esatta del secondo. Ma non dovrebbe essere collegato in alcun modo con esso. Non dovrebbe essere un puntatore. – acoder

risposta

13

Una soluzione per gentile concessione di Linq ...

Array1 = Array2.ToArray(); 

EDIT: non è necessario per allocare spazio per Array1 prima di usare questa chiamata LINQ. L'allocazione per Array1 viene eseguita entro ToArray(). Più completo esempio di seguito

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

Questa è una soluzione abbastanza accurata, ma dato che l'OP ha già assegnato l'array di destinazione ** e ** ha detto, "Ho appena impostato i riferimenti, non copio i valori", quindi penso che sarebbe prudente sottolineare nella tua risposta che stai creando un nuovo riferimento e non copiare i valori nell'array pre-assegnato. – Enigmativity

+1

Lo farò, l'istruzione nell'OP "Digitando' Array1 = Array2' Ho appena impostato i riferimenti, non copio i valori "Pensavo fosse un tentativo di dire che il riferimento dell'array è stato copiato e che i valori stessi erano non duplicato. Questo sembrò essere il caso anche nel suo successivo commento "Ma non dovrebbe essere collegato in alcun modo con esso.", che pensavo fosse un tentativo di dire' Array1 [0] = (byte) 1' non farà nulla per i valori in 'Array2' –

+1

Sì, sono d'accordo. Ecco perché penso che la tua risposta sia una soluzione abbastanza accurata. ho solo pensato che l'OP avrebbe potuto capire la meccanica un po 'più profondamente – Enigmativity