Método Queue.Clone() en C#

Este método se utiliza para crear una copia superficial de la cola. Simplemente crea una copia de la cola. La copia tendrá una referencia a un clon de los elementos internos pero no una referencia a los elementos originales.

Sintaxis: objeto virtual público Clone();

Valor de retorno: el método devuelve un objeto que es solo una copia superficial de la cola.

Ejemplo 1: Veamos un ejemplo sin usar un método Clone() y copiando directamente una Cola usando el operador de asignación ‘=’. En el siguiente código, podemos ver que incluso si eliminamos elementos de myQueue() de myQueue2, el contenido de myQueue también cambia. Esto se debe a que ‘=’ solo asigna la referencia de myQueue a myQueue2 y no crea ninguna cola nueva. Pero Clone() crea una nueva cola.

// C# program to Copy a Queue using 
// the assignment operator
using System;
using System.Collections;
  
class GFG {
  
    // Main Method
    public static void Main(string[] args)
    {
  
        Queue myQueue = new Queue();
        myQueue.Enqueue("Geeks");
        myQueue.Enqueue("Class");
        myQueue.Enqueue("Noida");
        myQueue.Enqueue("UP");
  
        // Creating a copy using the 
        // assignment operator.
        Queue myQueue2 = myQueue; 
  
        myQueue2.Dequeue();
  
        PrintValues(myQueue);
    }
  
    public static void PrintValues(IEnumerable myCollection)
    {
        // This method prints all the
        // elements in the Stack.
        foreach(Object obj in myCollection)
            Console.WriteLine(obj);
    }
}
Producción:

Class
Noida
UP

Ejemplo 2: Aquí myQueue no cambia.

// C# program to illustrate the use 
// of Object.Clone() Method 
using System;
using System.Collections;
  
class GFG {
  
    // Main Method
    public static void Main(string[] args)
    {
  
        Queue myQueue = new Queue();
        myQueue.Enqueue("Geeks");
        myQueue.Enqueue("Class");
        myQueue.Enqueue("Noida");
        myQueue.Enqueue("UP");
  
        // Creating copy using Clone() method.
        Queue myQueue2 = (Queue)myQueue.Clone(); 
        myQueue2.Dequeue();
  
        PrintValues(myQueue);
    }
  
    public static void PrintValues(IEnumerable myCollection)
    {
        // This method prints all the
        // elements in the Stack.
        foreach(Object obj in myCollection)
            Console.WriteLine(obj);
        Console.WriteLine();
    }
}
Producción:

Geeks
Class
Noida
UP

Referencia:

Publicación traducida automáticamente

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