Array.Copy
复制是否正常,但不会告诉我复制了多少元素。在任何一个阵列都不够大的情况下,复制的元素比我要求的要少,我需要知道有多少。那么是否有一些API来实现这一点,或者我必须在我自己的代码中进行计算?感谢。
答案 0 :(得分:2)
Array.Copy
将失败。在这种情况下,不会复制任何内容。如果你不这么认为你必须误解一些东西。
无论如何,你必须自己进行计算。
答案 1 :(得分:1)
如果我理解正确,您想将一个数组复制到一个新数组中,然后查看复制了多少项?
这是徒劳的。 Array.Copy()将复制每个项目,或者根本不复制任何项目。如果目标数组小于源数组,则会得到ArgumentException
。
MSDN告诉您以下内容:
sourceArray和destinationArray参数必须具有相同的维数。此外,destinationArray必须已经标注尺寸,并且必须具有足够数量的元素以容纳复制的数据。
或者,如果您使用Array.Copy Method (Array, Int64, Array, Int64, Int64)
重载,则需要在目标数组中有足够的空间来容纳源数组:
sourceArray和destinationArray参数必须具有相同的维数。此外,destinationArray必须已经标注尺寸,并且必须具有从destinationIndex位置开始的足够数量的元素以容纳复制的数据。
无论哪种方式,都不可能只复制部分项目,至少不能使用Array.Copy
答案 2 :(得分:0)
它会复制你告诉它的元素。 Array.Copy()
接受一个参数,指定要复制的元素数。
您可以使用每个数组的Length
属性来检查大小。
答案 3 :(得分:0)
根据文档,Array.Copy
的每个重载都有length
参数,因此您可以预先知道要复制的元素数量。
例如,如果我们这样称呼它:
Array.Copy(sourceArray, destinationArray, length);
然后正如文档所述:“如果length
大于sourceArray
或length
中的元素数量大于destinationArray
ArgumentException
中的元素数量1}}将被抛出“。