C#里怎么样实现数组的块拷贝?
有时候数组里的元素比较多,比如100M,如果采用循环的方式来拷贝,
可以想象肯定会很慢,因为要一个一个字节来拷贝到另外一个数组。
那么有没有快速的方法呢?
比如像C语言里的memmove,memcpy。
其实在C#里是使用Array.Copy和Buffer.BlockCopy。
在 C# 中,Buffer.BlockCopy 和 memcpy 都可以用来复制内存块的内容,但它们之间有一些区别。
Buffer.BlockCopy 是一个静态方法,返回 void,它允许你在不必使用指针的情况下将源数组的内容复制到目标数组。Buffer.BlockCopy 的签名如下:
public static void BlockCopy(Array src, int srcOffset, Array dst, int dstOffset, int count);
复制代码
memcpy 是一个 C 标准库函数,返回 void*,它是一个低级别的操作,需要使用指针进行操作。在 C# 中,你可以使用 DllImport 声明来调用 C 函数库中的 memcpy 函数。memcpy 的签名如下:
[DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
public st