І Array.Copy, і Buffer.BlockCopy роблять те ж саме, але BlockCopyспрямовано на швидке копіювання примітивного масиву на рівні байтів, тоді як Copyце реалізація загального призначення. Моє запитання - за яких обставин слід використовувати BlockCopy? Чи слід використовувати його в будь-який час, коли ви копіюєте масиви примітивного типу, або використовувати його потрібно лише в тому випадку, якщо ви кодуєте продуктивність? Чи є щось вроджене небезпечне у використанні Buffer.BlockCopyнад Array.Copy?
byte[]. Різниці у версії Release не було. Іноді Array.Copy, іноді Buffer.BlockCopy(трохи) швидше.
Array.Copyце скоріше спеціалізована версія - наприклад, вона може копіювати тільки ті ж масиви рангів.
Marshal.Copy:-). Ну, використовуйтеArray.Copyдля посилальних типів, складних типів значень, а якщо тип не змінюється,Buffer.BlockCopyдля "перетворення" між типами значень, байтовими масивами та байт-магією. F.ex. комбінація зStructLayoutдосить потужна, якщо ви знаєте, що робите. Що стосується продуктивності, то, здається, некерований виклик доmemcpy/cpblkє найшвидшим для цього - див. Code4k.blogspot.nl/2010/10/… .