首页 > 解决方案 > 如何通过移位将字节插入数组?

问题描述

我有一个字节数组,例如:

{0,1,2,3,4,5,6,7,8,9}

我想将较小的数组插入:

我要在原始数组的第三个索引之后插入的数组:

{11,11,11}

所以最终的数组应该是这样的:

{0,1,2,3,11,11,11,4,5,6,7,8,9}

如您所见,我需要保留数组的原始值,将它们向左移动,然后用新数组代替它。我正在研究 Array.Copy() 但它覆盖了原始值,而不是移动它们

标签: c#arrays

解决方案


您可以尝试使用Linq查询并将 array结果分配回它:

 using System.Linq;

 ...

 int[] array = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
 int[] insert = new int[] {11, 11, 11};

 array = array
   .Take(4)
   .Concat(insert)
   .Concat(array.Skip(4)) 
   .ToArray();  

如果您正在寻找低级 Array方法:

int[] array = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] insert = new int[] { 11, 11, 11 };

int at = 4;

Array.Resize<int>(ref array, array.Length + insert.Length);

Array.Copy(array, at, array, at + insert.Length, array.Length - at - insert.Length);
Array.Copy(insert, 0, array, at, insert.Length);

推荐阅读