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

El método Hashtable.Clone se utiliza para crear una copia superficial de Hashtable. Cuando hacemos una copia superficial , solo se copian los elementos de la colección independientemente de su tipo, no copia los objetos a los que se refieren las referencias. Básicamente, crea un nuevo objeto y ese objeto apunta a las referencias originales.

Sintaxis:

HashtableName.Clone();

Los siguientes ejemplos ilustran el uso de este método.

Ejemplo 1: Cree un objeto H1 del tipo de clase Hashtable que esté predefinido en el espacio de nombres System.Collections. Luego agregamos claves y valores de tipo string usando Hashtable. Añadir método. El método Hashtable.clone se usa para crear una copia superficial de H1. Usamos el bucle foreach para mostrar los elementos de ShallowH1. La propiedad DictionaryEntry se usa para establecer u obtener el valor de la clave, el valor ordenó un par.

// C# Program to demonstrate
// the Hashtable.Clone Method
using System;
using System.Collections;
  
namespace hashtable {
  
class GFG {
  
    // Main Method
    public static void Main(string[] args)
    {
        // Declaring a Hashtable named H1
        // Calls the default constructor
        Hashtable H1 = new Hashtable();
  
        // Adding keys and values
        // to the hashtable
        H1.Add("1", "This");
        H1.Add("2", "is");
        H1.Add("3", "a");
        H1.Add("4", "Hash");
        H1.Add("5", "Table");
  
        // Creating a shallow copy of H1
        Hashtable ShallowH1 = new Hashtable();
        ShallowH1 = (Hashtable)H1.Clone();
  
        // Displaying values of key, value pairs
        // Using DictionaryEntry which is predefined
        foreach(DictionaryEntry item in ShallowH1)
        {
            Console.WriteLine("Key " + item.Key + 
                         " Value " + item.Value);
        }
    }
}
}
Producción:

Key 5 Value Table
Key 1 Value This
Key 4 Value Hash
Key 3 Value a
Key 2 Value is

Ejemplo 2: Ahora intentemos hacer algún cambio en la copia superficial. Como se muestra en el código a continuación, los cambios de la copia superficial no se reflejan en el Hashtable original.

// C# Program to demonstrate
// the Hashtable.Clone Method
using System;
using System.Collections;
  
namespace hashtable2 {
  
class GFG {
  
    // Main Method
    public static void Main(String[] args)
    {
        // Declaring a Hashtable
        // Calls the constructor
        Hashtable H1 = new Hashtable();
  
        // Add the values to H1
        H1.Add("1", "Orange");
        H1.Add("2", "Apple");
        H1.Add("3", "Blueberry");
  
        // Create a shallow copy
        Hashtable H2 = new Hashtable();
        H2 = (Hashtable)H1.Clone();
  
        // Making changes in the shallow copy
        H2.Add("4", "Mango");
        H2.Remove("1");
  
        // Displaying original Hashtable
        foreach(DictionaryEntry item in H1)
            Console.WriteLine("Key {0} Value {1}",
                            item.Key, item.Value);
  
        Console.WriteLine();
  
        // Displaying shallow copy
        // of the Hashtable
        foreach(DictionaryEntry item in H2)
            Console.WriteLine("Key {0} Value {1}", 
                            item.Key, item.Value);
    }
}
}
Producción:

Key 3 Value Blueberry
Key 2 Value Apple
Key 1 Value Orange

Key 4 Value Mango
Key 3 Value Blueberry
Key 2 Value Apple

Referencia:

Publicación traducida automáticamente

Artículo escrito por ManasiKirloskar 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 *