c#中操作短整数组的最快方法是什么?我想念memset,mempcy和memmove等东西。
我需要清除(设置为0)数组的部分并移动部分(比如将值移动到不同的索引)
更确切地说:我有一个巨大的阵列,我必须修改。有时我必须清除该数组的部分,将它们设置为0.其他时候我必须在同一个数组内移动数据。因此,我需要对已经分配的相同数组进行操作
答案 0 :(得分:3)
c#
中的数组已经分配了该类型的默认值,因此memset
与0
通常无关。你永远不会在构造上得到“ dirty ”数组。
对于复制操作,您可以使用Array.Copy
进行类型复制,或使用Buffer.Blockcopy
进行原始字节复制。
这两个都支持从/向同一个数组复制,你必须小心不要提供重叠的id。
编辑:
要清除数据,您可以使用Array.Clear
答案 1 :(得分:0)
要清除数组的一部分,您可以使用以下方法:
public static void Clear(short[] arr, int start, int len) {
int end = start + len;
for (int i = start; i < end; i++) arr[i] = 0;
}
要进行复制,您可以使用Array.Copy
或Buffer.BlockCopy
方法。它们还处理同一阵列中的复制,即使源和目标区域重叠。