【发布时间】:2019-10-15 07:21:25
【问题描述】:
当我将列表放入ConcurrentQueue 并稍后检索它时,内容可能会被修改。为什么?
var list = new List<int> { 1 };
var queue = new ConcurrentQueue<List<int>>();
queue.Enqueue(list); // Put the list in the queue
list.Clear(); // Clear the list
if (queue.TryDequeue(out var originalList))
Console.WriteLine(originalList.Count); // output 0: the original list is empty !?
【问题讨论】:
-
我的问题有什么问题?我没有更多的代码,它不工作。那我还能说什么。
-
为什么在访问队列之前要加锁?
-
你可以提供一个可编译的例子。
-
"Count for objects in list = 0" - 在将 reference 排入队列后清除列表。
标签: c# reference containers