簡體   English   中英

在C#中克隆隊列

[英]Cloning queue in c#

我有以下代碼:

Queue<string> oldQueue = new Queue<string>();

oldQueue.Enqueue("One");
oldQueue.Enqueue("Two");
oldQueue.Enqueue("Three");

Queue newQueue = oldQueue;
string newString = newQueue.Dequeue();

問題在於,一旦我從newQueue中將項目出隊,該項目也會從oldQueueoldQueue 有沒有一種方法可以從一個隊列中刪除某個項目以使其克隆隊列保持不變,從而“克隆”隊列?

您必須進行更深的復制:

   //Queue newQueue = oldQueue;
   Queue<string> newQueue = new Queue<string>(oldQueue);

隊列是一種引用類型,因此newQueue和oldQueue擁有一個指向同一對象的指針。 他們是一樣的 ;-)

請參閱以下有關如何使用反射進行“深度克隆”的答案:

在Silverlight的擴展方法中使用反射進行深度復制?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM