用 C# 创建固定大小的队列并自动删除旧项目
本文讨论了创建一个数据结构,该结构维护有限的对象历史记录,当达到最大大小时自动丢弃最旧的条目。我们将使用 System.Collections
命名空间构建此队列。
解决方案:
该解决方案使用围绕 FixedSizedQueue<T>
的包装类 ConcurrentQueue<T>
。 此包装器中的 Enqueue
方法检查队列的大小。如果队列已满(由 Limit
属性定义),则通过 Dequeue
删除最旧的项目以容纳新项目。
这是 FixedSizedQueue<T>
类的 C# 代码:
<code class="language-csharp">public class FixedSizedQueue<T> { private readonly ConcurrentQueue<T> queue = new ConcurrentQueue<T>(); private readonly object lockObject = new object(); public int Limit { get; set; } public void Enqueue(T obj) { queue.Enqueue(obj); lock (lockObject) { T overflow; while (queue.Count > Limit && queue.TryDequeue(out overflow)) ; } } }</code>
使用 FixedSizedQueue<T>
可确保固定大小的历史记录,并在达到容量限制时自动删除旧项目。
以上是如何在C#中实现自动出队的固定大小队列?的详细内容。更多信息请关注PHP中文网其他相关文章!