How to create a shallow copy of ArrayList in C# (original) (raw)

Last Updated : 07 Feb, 2019

ArrayList.Clone() Method is used to create a shallow copy of the specified ArrayList. A shallow copy of a collection copies only the elements of the collection irrespective of reference types or value types. But it does not copy the objects that the references refer to. The references in the new collection point to the same objects that the references in the original collection point to. Syntax:

public virtual object Clone ();

Below programs illustrate the use of above-discussed method:Example 1:

csharp `

// C# code to illustrate the use // of ArrayList.Clone Method using System; using System.Collections;

public class GFG {

// Main Method
public static void Main(String[] args)
{

    // Creating an empty ArrayList
    ArrayList list = new ArrayList();

    // Use Add() method
    // to Add elements 
    // in the list
    list.Add("Geeks");
    list.Add("for");
    list.Add("Geeks");
    list.Add("10");
    list.Add("20");

    // Displaying the list
    Console.WriteLine("Elements of Original ArrayList: \n");

    // Displaying the elements in ArrayList
    foreach(string str in list)
    {
        Console.WriteLine(str);
    }

    // Creating another ArrayList
    ArrayList sec_list = new ArrayList();
    
    // using Clone() Method
    sec_list = (ArrayList)list.Clone();

    // Displaying the Cloned ArrayList
    Console.WriteLine("\nElements of Cloned ArrayList: \n");

    // Displaying the elements in ArrayList
    foreach(string str1 in sec_list)
    {
        Console.WriteLine(str1);
    }
}

}

`

Output:

Elements of Original ArrayList:

Geeks for Geeks 10 20

Elements of Cloned ArrayList:

Geeks for Geeks 10 20

Example 2:

csharp `

// C# code to illustrate the use // of ArrayList.Clone Method using System; using System.Collections;

public class GFG {

// Main Method
public static void Main(String[] args)
{

    // Creating an empty ArrayList
    ArrayList list = new ArrayList();

    // Use Add() method
    // to Add elements 
    // in the list
    list.Add(10);
    list.Add(20);
    list.Add(30);
    list.Add(40);
    list.Add(50);

    // Displaying the list
    Console.WriteLine("Elements of Original ArrayList: \n");
    
    // calling function
    Result(list);

    // using Clone() method
    ArrayList sec_list = (ArrayList)list.Clone();

    // Displaying the Cloned ArrayList
    Console.WriteLine("\nElements of Cloned ArrayList: \n");
    
    // calling function
    Result(sec_list);
    
    // adding a new value to 
    // original ArrayList
    list.Add(60);
    
    Console.WriteLine("\nAfter Adding, Original ArrayList: \n");
    
    // Calling function
    Result(list);
    
    Console.WriteLine("\nAfter Adding, Cloned ArrayList: \n");
    
    // Calling function
    Result(sec_list);
    
    // checking for the equality  
    // of References list and sec_list 
    Console.WriteLine("\nReference Equals: {0}", 
      Object.ReferenceEquals(list, sec_list)); 

    
}

// method to display the values public static void Result(ArrayList ar) { // This method prints all the // elements in the ArrayList. foreach(int i in ar) Console.WriteLine(i); } }

`

Output:

Elements of Original ArrayList:

10 20 30 40 50

Elements of Cloned ArrayList:

10 20 30 40 50

After Adding, Original ArrayList:

10 20 30 40 50 60

After Adding, Cloned ArrayList:

10 20 30 40 50

Reference Equals: False

Reference:

Similar Reads