如何在数组之间复制元素,同时知道复制了多少元素

本文关键字:复制 元素 多少 数组 之间 | 更新日期: 2023-09-27 18:20:34

Array.Copy进行复制工作,但不会告诉我复制了多少元素。在任何一个数组都不够大,以至于复制的元素比我要求的少的情况下,我需要知道有多少。那么,是否有一些API可以实现这一点,或者我必须在自己的代码中进行计算?谢谢

如何在数组之间复制元素,同时知道复制了多少元素

如果目标数组中没有足够的空间,则Array.Copy将失败。在这种情况下不会复制任何内容。如果你不这么想,你一定是误解了什么。

在任何情况下,你都必须自己进行计算。

如果我理解正确,您想将一个数组复制到一个新数组中,然后查看复制了多少项?这是徒劳的。Array.Copy()将复制所有项,或者根本不复制任何项。如果目标数组小于源数组,则会得到一个ArgumentException。MSDN告诉您以下内容:

sourceArray和destinationArray参数必须具有相同数量的维度。此外,destinationArray必须已经进行了标注,并且必须有足够数量的元素来容纳复制的数据。

或者,如果您使用Array.Copy Method (Array, Int64, Array, Int64, Int64)重载,您需要在目标阵列中有足够的空间来容纳源阵列:

sourceArray和destinationArray参数必须具有相同数量的维度。此外,destinationArray必须已经进行了标注,并且从destinationIndex位置开始必须有足够数量的元素来容纳复制的数据。

无论哪种方式,都不可能只复制部分项目,至少Array.Copy 是不可能的

它将按照您的指示复制元素。Array.Copy()采用一个参数来指定要复制的元素数量。

可以使用每个数组的Length属性来检查大小。

根据文档,Array.Copy的每个重载都有length参数,因此您知道将预先复制多少元素。

例如,如果我们这样称呼它:

Array.Copy(sourceArray, destinationArray, length);

则如文档所述:"如果length大于sourceArray中的元素数,或者length大于destinationArray中的元素数来抛出ArgumentException"。