Array.Copy und Buffer.BlockCopy machen beide dasselbe, BlockCopyzielen jedoch auf schnelles primitives Array-Kopieren auf Byte-Ebene ab, während dies Copydie allgemeine Implementierung ist. Meine Frage ist - unter welchen Umständen sollten Sie verwenden BlockCopy? Sollten Sie es zu irgendeinem Zeitpunkt verwenden, wenn Sie Arrays vom primitiven Typ kopieren, oder sollten Sie es nur verwenden, wenn Sie für die Leistung codieren? Ist die Verwendung von Buffer.BlockCopyOver von Natur aus gefährlich Array.Copy?
byte[]. Es gab keinen Unterschied in der Release-Version. Manchmal Array.Copy, manchmal Buffer.BlockCopy(etwas) schneller.
Array.Copyist eher eine spezialisierte Version - zum Beispiel kann sie nur die gleichen Rang-Arrays kopieren.
Marshal.Copy:-). Nun, verwenden SieArray.Copyfür Referenztypen, komplexe Werttypen und, wenn sich der Typ nicht ändert,Buffer.BlockCopyfür die "Konvertierung" zwischen Werttypen, Bytearrays und Bytemagie. F.ex. Die Kombination mitStructLayoutist ziemlich mächtig, wenn Sie wissen, was Sie tun. In Bezug auf die Leistung scheint ein nicht verwalteter Aufruf vonmemcpy/cpblkder schnellste zu sein - siehe code4k.blogspot.nl/2010/10/… .