Array.Copy和Array.CopyTo有什么区别?

时间:2009-10-22 05:00:27

标签: c# .net arrays

Array.CopyCopyTo之间有什么区别吗?它们只是超负荷吗?

5 个答案:

答案 0 :(得分:6)

仔细看看。 Copy是静态方法,而CopyTo是实例方法。

答案 1 :(得分:6)

相同的功能,不同的调用约定。 Copy是一种静态方法,而CopyTo则不是。

Array.Copy(arraySrc, arrayDest, arraySrc.length);
arraySrc.CopyTo(arrayDest, arraySrc.length);

答案 2 :(得分:5)

但他们不仅在惯例上有所不同;有一个关键的功能差异。

以下摘自MSDN

  

此方法(Array.CopyTo)支持System.Collections.ICollection接口。如果未明确要求实施System.Collections.ICollection,请使用Copy以避免额外的间接。

答案 3 :(得分:1)

比较
https://msdn.microsoft.com/en-us/library/k4yx47a1.aspx
https://msdn.microsoft.com/en-us/library/06x742cw.aspx
我们将看到:

Array.CopyTo

  • 能够复制多维数组。
  • 更容易指定要复制的范围。
  • 静态方法。

CopyTo从

有些事情我不确定,Array.CopyTo的评论说:

  

此方法等同于标准C / C ++函数memmove,而不是memcpy

哪个CopyTo没有这样的描述 确实,使用CopyTo而不使用参数来控制范围,将数组的一部分复制到自身并不容易。不过,您可以使用ArraySegmentarray.Skip(offset).Take(length)来实现它 在我的测试中,这样做没有问题。

答案 4 :(得分:0)

从功能上讲,我不知道除了CopyTo方法之外是否会有任何不同之处将复制数组的所有元素,而Copy将允许您指定要复制的元素范围