How to create a shallow copy of ArrayList in C# - GeeksforGeeks

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:
// C# code to illustrate the use // of ArrayList.Clone Methodusing 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);        }    }}
Elements of Original ArrayList: 

Geeks
for
Geeks
10
20

Elements of Cloned ArrayList: 

Geeks
for
Geeks
10
20

Example 2:
// C# code to illustrate the use // of ArrayList.Clone Methodusing 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 valuespublic static void Result(ArrayList ar) {     // This method prints all the     // elements in the ArrayList.     foreach(int i in ar)         Console.WriteLine(i); } }
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:
https://docs.microsoft.com/en-us/dotnet/api/system.collections.arraylist.clone?view=netframework-4.7.2
CSharp-Collections-ArrayList
CSharp-Collections-Namespace
CSharp-method
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C# Dictionary with examples
C# | Delegates
C# | Abstract Classes
Extension Method in C#
C# | Replace() Method
C# | String.IndexOf( ) Method | Set - 1
Introduction to .NET Framework
C# | Data Types
C# | Arrays
HashSet in C# with Examples