如何将数组的一部分复制到C#中的另一个数组?

我怎样才能将一个数组的一部分复制到另一个数组?

考虑我有

int[] a = {1,2,3,4,5}; 

现在,如果我给数组a的开始索引和结束索引,它应该被复制到另一个数组。

就像我开始索引为1,结束索引为3,元素2,3,4应该被复制到新的数组中。

 int[] b = new int[3]; Array.Copy(a, 1, b, 0, 3); 
  • a =源数组
  • 1 =源数组中的起始索引
  • b =目标数组
  • 0 =目标数组中的起始索引
  • 3 =要复制的元素

看到这个问题 。 ()和Skip()是最stream行的答案,以及Array.CopyTo()。

这里描述了一个据说更快的扩展方法 。

 int[] a = {1,2,3,4,5}; int [] b= new int[a.length]; //New Array and the size of a which is 4 Array.Copy(a,b,a.length); 

其中Array是具有方法Copy的类,它将数组的元素复制到b数组中。

从一个数组复制到另一个数组时,必须将相同的数据types提供给正在复制的另一个数组。

注:我发现这个问题寻找如何调整现有数组的大小的答案中的一个步骤。

所以我想我会在这里添加这些信息,以防其他人正在寻找如何做一个远程副本作为调整数组大小问题的部分答案。

对于find这个问题的其他人来说,我也是这样,这很简单:

 Array.Resize<T>(ref arrayVariable, newSize); 

其中T是types,即声明arrayVariable的地方:

 T[] arrayVariable; 

该方法处理空检查,以及newSize == oldSize没有任何效果,当然默默地处理其中一个数组比其他数组更长的情况。

有关更多信息,请参阅MSDN文章 。