C# Array.Copy和Array.CopyTo之间有什么区别?
C# Array.Copy和Array.CopyTo之间有什么区别?,c#,.net,arrays,C#,.net,Arrays,Array.Copy和CopyTo之间有什么区别吗?它们只是超载了吗?仔细看看Copy是一种静态方法,而CopyTo是一种实例方法。相同的功能,不同的调用约定Copy是一种静态方法,而CopyTo不是 Array.Copy(arraySrc, arrayDest, arraySrc.length); arraySrc.CopyTo(arrayDest, startingIndex); 从功能上讲,我不知道这两种方法之间是否有什么不同,除了CopyTo方法将复制数组的所有元素,copy将允许您指
Array.Copy
和CopyTo
之间有什么区别吗?它们只是超载了吗?仔细看看Copy
是一种静态方法,而CopyTo
是一种实例方法。相同的功能,不同的调用约定Copy
是一种静态方法,而CopyTo
不是
Array.Copy(arraySrc, arrayDest, arraySrc.length);
arraySrc.CopyTo(arrayDest, startingIndex);
从功能上讲,我不知道这两种方法之间是否有什么不同,除了CopyTo方法将复制数组的所有元素,copy将允许您指定要复制的元素范围,但它们不仅在约定方面有所不同;有一个关键的功能差异 以下是一段摘录: 此方法(
Array.CopyTo
)支持System.Collections.ICollection
接口。如果没有明确要求实现System.Collections.ICollection
,请使用Copy
以避免额外的间接操作
比较和
,
我们将看到: Array.CopyTo
- 能够复制多维数组李>
- 更容易指定要复制的范围
- 静态方法
- 有更好的表现。(as)
- 实例方法
Array.CopyTo
的评论说:
此方法相当于标准C/C++函数memmove
,而不是memcpy
哪个CopyTo
没有这样的描述。确实,如果不使用参数来控制范围,那么使用
CopyTo
将数组的一部分复制到它本身是不容易的。不过,您可以使用ArraySegment
或array.Skip(offset)。Take(length)
来实现它。在我的测试中,这样做没有问题。Popeter:您给出了错误的语法。copy的语法是Array.copy(srcarray,destarray,srcarray.length);也适用于copyto方法:srcarray.copyto(destarray,destarray\u index);更多细节请参考Gmathipriya所说的正确:应该是:arraySrc.CopyTo(arrayDest,arrayDest.StartIndex);这是一个错误,让我大吃一惊。请有人编辑答案,我在不同的时间尝试了两次,但没有成功。它是
Array.Copy
而不是Array.CopyTo
<代码>复制到是另一回事。