📜  C#中的Queue.Clone()方法

📅  最后修改于: 2021-05-29 15:43:58             🧑  作者: Mango

此方法用于创建队列的浅表副本。它只是创建队列的副本。该副本将引用内部元素的克隆,但不引用原始元素。

示例1:让我们看一个示例,该示例不使用Clone()方法,而是使用赋值运算符’=’直接复制Queue。在下面的代码中,即使我们从myQueue2中删除了Dequeue()元素,我们也可以看到myQueue的内容也发生了变化。这是因为“ =”仅将myQueue的引用分配给myQueue2,而不创建任何新的Queue。但是Clone()创建一个新的队列。

// 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);
    }
}
输出:
Class
Noida
UP

示例2:此处myQueue保持不变。

// 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();
    }
}
输出:
Geeks
Class
Noida
UP

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.queue.clone?view=netframework-4.7.2