Cómo crear una copia superficial de ArrayList en C#

El método ArrayList.Clone() se usa para crear una copia superficial del ArrayList especificado . Una copia superficial de una colección copia solo los elementos de la colección, independientemente de los tipos de referencia o los tipos de valor. Pero no copia los objetos a los que se refieren las referencias. Las referencias en la nueva colección apuntan a los mismos objetos a los que apuntan las referencias en la colección original.

Sintaxis:

public virtual object Clone ();

Los siguientes programas ilustran el uso del método mencionado anteriormente:

Ejemplo 1:

// 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);
        }
    }
}
Producción:

Elements of Original ArrayList: 

Geeks
for
Geeks
10
20

Elements of Cloned ArrayList: 

Geeks
for
Geeks
10
20

Ejemplo 2:

// 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); 
} 
}
Producción:

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

Referencia:

Publicación traducida automáticamente

Artículo escrito por Kirti_Mangal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *