Array.Copy и Buffer.BlockCopy делают одно и то же, но BlockCopyнацелены на быстрое копирование примитивных массивов на уровне байтов, тогда как Copyэто реализация общего назначения. У меня вопрос - при каких обстоятельствах вам следует использовать BlockCopy? Следует ли вам использовать его в любое время, когда вы копируете массивы примитивных типов, или вам следует использовать его только в том случае, если вы кодируете для повышения производительности? Есть ли что-нибудь опасное в использовании Buffer.BlockCopyover 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/… .