Array.Copy e Buffer.BlockCopy fazem a mesma coisa, mas BlockCopytêm como objetivo a cópia rápida da matriz primitiva no nível de bytes, enquanto Copyé a implementação de uso geral. Minha pergunta é - em que circunstâncias você deve usar BlockCopy? Você deve usá-lo a qualquer momento quando estiver copiando matrizes de tipo primitivo ou deve usá-lo apenas se estiver codificando para desempenho? Existe algo inerentemente perigoso sobre o uso Buffer.BlockCopyexcessivo Array.Copy?
byte[]. Não houve diferença na versão Release. Às vezes Array.Copy, às vezes Buffer.BlockCopy(um pouco) mais rápido.
Array.Copyé uma versão especializada - por exemplo, ele pode copiar apenas as mesmas matrizes de classificação.
Marshal.Copy:-). Bem, useArray.Copypara tipos de referência, tipos de valor complexos e, se o tipo não for alterado,Buffer.BlockCopypara "conversão" entre tipos de valor, matrizes de bytes e magia de bytes. F.ex. a combinação comStructLayouté bastante poderosa se você souber o que está fazendo. Quanto ao desempenho, parece que uma chamada não gerenciada paramemcpy/cpblké a mais rápida para isso - consulte code4k.blogspot.nl/2010/10/… .