Array.Copy
和CopyTo
之间有什么区别吗?它们只是超负荷吗?
答案 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
的评论说:
此方法等同于标准C / C ++函数
memmove
,而不是memcpy
。
哪个CopyTo
没有这样的描述
确实,使用CopyTo
而不使用参数来控制范围,将数组的一部分复制到自身并不容易。不过,您可以使用ArraySegment
或array.Skip(offset).Take(length)
来实现它
在我的测试中,这样做没有问题。
答案 4 :(得分:0)
从功能上讲,我不知道除了CopyTo方法之外是否会有任何不同之处将复制数组的所有元素,而Copy将允许您指定要复制的元素范围