Array.Copy y Buffer.BlockCopy hacen lo mismo, pero BlockCopytienen como objetivo la copia rápida de matrices primitivas a nivel de bytes, mientras que Copyes la implementación de propósito general. Mi pregunta es: ¿bajo qué circunstancias debe usar BlockCopy? ¿Debería usarlo en cualquier momento cuando esté copiando matrices de tipos primitivos, o solo debe usarlo si está codificando para el rendimiento? ¿Hay algo inherentemente peligroso sobre el uso de Buffer.BlockCopymás Array.Copy?
byte[]. No hubo diferencia en la versión de lanzamiento. A Array.Copyveces, a veces Buffer.BlockCopy(ligeramente) más rápido.
Array.Copyes más bien una versión especializada; por ejemplo, solo puede copiar las mismas matrices de rango.
Marshal.Copy:-). Bueno, utilíceloArray.Copypara tipos de referencia, tipos de valores complejos y, si el tipo no cambia,Buffer.BlockCopypara "conversión" entre tipos de valores, conjuntos de bytes y magia de bytes. F.ex. la combinación conStructLayoutes bastante poderosa si sabes lo que estás haciendo. En cuanto al rendimiento, parece que una llamada no administrada amemcpy/cpblkes la más rápida para eso; consulte code4k.blogspot.nl/2010/10/… .