繁体   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