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

时间:2014-09-04 12:04:59

标签: c# arrays

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

4 个答案:

答案 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大于sourceArraylength中的元素数量大于destinationArray ArgumentException中的元素数量1}}将被抛出“。