Array.Copy e Buffer.BlockCopy fanno entrambi la stessa cosa, ma BlockCopysono finalizzati alla copia veloce di array primitivi a livello di byte, mentre Copyè l'implementazione generica. La mia domanda è: in quali circostanze dovresti usare BlockCopy? Dovresti usarlo in qualsiasi momento quando copi array di tipi primitivi o dovresti usarlo solo se stai codificando per le prestazioni? C'è qualcosa di intrinsecamente pericoloso nell'usare Buffer.BlockCopyover Array.Copy?
byte[]. Non c'era differenza nella versione di rilascio. A volte Array.Copy, a volte Buffer.BlockCopy(leggermente) più veloce.
Array.Copyè piuttosto una versione specializzata, ad esempio può copiare solo gli stessi array di rango.
Marshal.Copy:-). Bene, usaloArray.Copyper i tipi di riferimento, i tipi di valore complessi e se il tipo non cambia,Buffer.BlockCopyper la "conversione" tra tipi di valore, array di byte e byte magic. F.ex. la combinazione conStructLayoutè abbastanza potente se sai cosa stai facendo. Per quanto riguarda le prestazioni, sembra che una chiamata non gestita amemcpy/cpblksia la più veloce per questo - vedere code4k.blogspot.nl/2010/10/… .