Método Stack.Clone() en C#

Este método se utiliza para crear una copia superficial de la pila. Simplemente crea una copia de la pila. La copia tendrá una referencia a un clon de la array de datos interna pero no una referencia a la array de datos interna original.

Sintaxis: objeto virtual público Clone();

Valor devuelto: el método devuelve un objeto que es solo la copia superficial de la pila.

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

// C# program to Copy a Stack using 
// the assignment operator
using System;
using System.Collections;
  
class GFG {
  
    // Main Method
    public static void Main(string[] args)
    {
  
        Stack myStack = new Stack();
        myStack.Push("C");
        myStack.Push("C++");
        myStack.Push("Java");
        myStack.Push("C#");
  
        // Creating a copy using the
        // assignment operator.
        Stack myStack2 = myStack; 
  
        // Removing top most element
        myStack2.Pop(); 
        PrintValues(myStack);
    }
  
    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:

Java
C++
C

Ejemplo 2:

// C# program to illustrate the use 
// of Stack.Clone() Method 
using System;
using System.Collections;
  
class MainClass {
  
    // Main Method
    public static void Main(string[] args)
    {
  
        Stack myStack = new Stack();
        myStack.Push("1st Element");
        myStack.Push("2nd Element");
        myStack.Push("3rd Element");
        myStack.Push("4th Element");
  
        // Creating copy using Clone() method
        Stack myStack3 = (Stack)myStack.Clone(); 
      
        // Removing top most element
        myStack3.Pop(); 
        PrintValues(myStack);
    }
  
    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:

4th Element
3rd Element
2nd Element
1st Element

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 *