c#中最快的方法是清除阵列的某些部分或移动部分

时间:2013-12-17 12:11:51

标签: c# arrays

c#中操作短整数组的最快方法是什么?我想念memset,mempcy和memmove等东西。

我需要清除(设置为0)数组的部分并移动部分(比如将值移动到不同的索引)

更确切地说:我有一个巨大的阵列,我必须修改。有时我必须清除该数组的部分,将它们设置为0.其他时候我必须在同一个数组内移动数据。因此,我需要对已经分配的相同数组进行操作

2 个答案:

答案 0 :(得分:3)

c#中的数组已经分配了该类型的默认值,因此memset0通常无关。你永远不会在构造上得到“ 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.CopyBuffer.BlockCopy方法。它们还处理同一阵列中的复制,即使源和目标区域重叠。