写起来更容易
intArray1.CopyTo( intArray2, 0 )
比for-loop等效,但System.Array
不提供任何通用的Copy
/ CopyTo
方法。
编写for循环是否更好?或者正在使用Copy
/ CopyTo
编译或JIT有效吗?
答案 0 :(得分:2)
Array.Copy/CopyTo
的执行速度比手动循环要快,因为它可以直接进行内存复制。
如果您没有大型阵列或速度不是问题,请使用代码中最适合您需要复制项目的内容。
答案 1 :(得分:1)
如果您正在复制一个原始类型数组,您可以使用Buffer类BlockCopy方法自行编写内存复制技术。
int[] CopyArray(int[] A, int index)
{
const int INT_SIZE = 4;
int length = A.Length - index;
int[] B = new int[A.Length - index];
Buffer.BlockCopy(A, index * INT_SIZE, B,
0 * INT_SIZE, length * INT_SIZE);
return B;
}
此方法是复制基元数组的最有效方式。 (它只适用于原语)
答案 2 :(得分:0)
我说如果您知道要将第一个数组的全部内容复制到第二个数组而不更改值或对副本执行任何特定处理,请使用Array.CopyTo
。
这有一些限制。数组必须只有一个维度,因为我记得它。此外,如果阵列非常大,你可能会遇到与copyto有关的一些与速度相关的问题,但我想这只会与非常大的数组一起发挥作用。所以,我会尝试并测试它,但你的里程可能会有所不同。