Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Array.Copy和Array.CopyTo之间有什么区别?_C#_.net_Arrays - Fatal编程技术网

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
<代码>复制到是另一回事。