Array.Copy et Buffer.BlockCopy font tous deux la même chose, mais BlockCopyvisent à une copie rapide de tableaux primitifs au niveau des octets, alors que Copyc'est l'implémentation à usage général. Ma question est - dans quelles circonstances devriez-vous utiliser BlockCopy? Devez-vous l'utiliser à tout moment lorsque vous copiez des tableaux de types primitifs, ou devriez-vous l'utiliser uniquement si vous codez pour les performances? Y a-t-il quelque chose de intrinsèquement dangereux à utiliser Buffer.BlockCopyover Array.Copy?
byte[]. Il n'y avait aucune différence dans la version Release. Parfois Array.Copy, parfois Buffer.BlockCopy(légèrement) plus vite.
Array.Copyest plutôt une version spécialisée - par exemple, elle ne peut copier que les mêmes tableaux de rangs.
Marshal.Copy:-). Eh bien, utilisezArray.Copypour les types de référence, les types de valeurs complexes et si le type ne change pas,Buffer.BlockCopypour la "conversion" entre les types de valeurs, les tableaux d'octets et la magie d'octets. Par ex. la combinaison avecStructLayoutest assez puissante si vous savez ce que vous faites. En ce qui concerne les performances, il semble qu'un appel non géré versmemcpy/cpblksoit le plus rapide pour cela - voir code4k.blogspot.nl/2010/10/… .