Answers:
int[] b = new int[3];
Array.Copy(a, 1, b, 0, 3);
注意:我发现此问题是在寻找如何调整现有阵列大小的答案中的步骤之一。
因此,我想在这里添加这些信息,以防万一其他人在寻找如何进行远程复制的问题,作为对调整数组大小的问题的部分答案。
对于任何发现此问题并寻找与我相同的人,这非常简单:
Array.Resize<T>(ref arrayVariable, newSize);
其中T是类型,即在其中声明arrayVariable的地方:
T[] arrayVariable;
该方法处理空检查,以及newSize == oldSize不起作用,并且当然静默处理其中一个数组比另一个数组长的情况。
有关更多信息,请参见MSDN文章。
如果您想实现自己的Array.Copy方法。
泛型类型的静态方法。
static void MyCopy<T>(T[] sourceArray, long sourceIndex, T[] destinationArray, long destinationIndex, long copyNoOfElements)
{
long totaltraversal = sourceIndex + copyNoOfElements;
long sourceArrayLength = sourceArray.Length;
//to check all array's length and its indices properties before copying
CheckBoundaries(sourceArray, sourceIndex, destinationArray, copyNoOfElements, sourceArrayLength);
for (long i = sourceIndex; i < totaltraversal; i++)
{
destinationArray[destinationIndex++] = sourceArray[i];
}
}
边界方法的实现。
private static void CheckBoundaries<T>(T[] sourceArray, long sourceIndex, T[] destinationArray, long copyNoOfElements, long sourceArrayLength)
{
if (sourceIndex >= sourceArray.Length)
{
throw new IndexOutOfRangeException();
}
if (copyNoOfElements > sourceArrayLength)
{
throw new IndexOutOfRangeException();
}
if (destinationArray.Length < copyNoOfElements)
{
throw new IndexOutOfRangeException();
}
}