clone vs ToCopy array

What is difference between clone vs ToCopy of array and how it is differ from DataSet's clone and ToCopy method.

Thanks



Answer this question

clone vs ToCopy array

  • Marc Jones

    Actually, CopyTo() does NOT make a deep copy, as the following code demonstrates:



    public class Test
    {
    public string s;
    }

    ...

    private void test()
    {
    Test[] array = new Test[1];
    array[0] = new Test();
    array[0].s = "ORIGINAL";

    Test[] copy = new Test[1];
    array.CopyTo(copy, 0);
    // Next line displays "ORIGINAL"
    MessageBox.Show("array[0].s = " + array[0].s);
    copy[0].s = "CHANGED";
    // Next line displays "CHANGED", showing that
    // changing the copy also changes the original.
    MessageBox.Show("array[0].s = " + array[0].s);
    }





  • kjak

    Hi

    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 would create a new instance of each element's object, resulting in a different, yet identacle object.

    Hope this is clear enough.

    Best regards



  • clone vs ToCopy array