Difference between the System.Array.CopyTo() and System.Array.Clone()


Question

What’s the difference between the System.Array.CopyTo() and System.Array.Clone()?

1
72
2/13/2012 7:24:44 AM

Accepted Answer

The Clone() method returns a new array (a shallow copy) object containing all the elements in the original array. The CopyTo() method copies the elements into another existing array. Both perform a shallow copy. A shallow copy means the contents (each array element) contains references to the same object as the elements in the original array. A deep copy (which neither of these methods performs) would create a new instance of each element's object, resulting in a different, yet identical object.

So the difference are :

1- CopyTo require to have a destination array when Clone return a new array.
2- CopyTo let you specify an index (if required) to the destination array.
Edit:

Remove the wrong example.

47
10/14/2012 7:50:16 PM

One other difference not mentioned so far is that

  • with Clone() the destination array need not exist yet since a new one is created from scratch.
  • with CopyTo() not only does the destination array need to already exist, it needs to be large enough to hold all the elements in the source array from the index you specify as the destination.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon