如何在数组之间复制元素,同时知道复制了多少元素
本文关键字:复制 元素 多少 数组 之间 | 更新日期: 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
"。