首页 > 后端开发 > C++ > 如何在 C# 中实现具有自动出队功能的固定大小队列?

如何在 C# 中实现具有自动出队功能的固定大小队列?

Barbara Streisand
发布: 2025-01-13 08:21:43
原创
493 人浏览过

How Can I Implement a Fixed-Size Queue with Automatic Dequeueing in C#?

创建具有自动出列功能的 C# 固定大小队列

许多应用程序需要一个包含固定数量项目的数据结构,当项目已满时删除最旧的项目。这对于跟踪最近的事件或维护历史记录非常有用。 想象一下,一个 Web 浏览器需要存储最近访问的 100 个 URL。虽然 ConcurrentQueue<T> 可以工作,但手动管理出队效率很低。自定义包装类提供了更清晰的解决方案。

FixedSizedQueue<T>班级

此类包装了 ConcurrentQueue<T>,处理入队和出队以维持设定的大小。 类定义包括:

<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; }
    // ... other methods
}</code>
登录后复制

Enqueue方法

Enqueue 方法添加项目。 如果队列超出限制,它将删除较旧的项目:

<code class="language-csharp">public void Enqueue(T item)
{
    queue.Enqueue(item);
    lock (lockObject)
    {
        T overflow;
        while (queue.Count > Limit && queue.TryDequeue(out overflow)) ;
    }
}</code>
登录后复制

使用FixedSizedQueue<T>

要使用该类,请创建一个实例并设置限制:

<code class="language-csharp">var urlHistory = new FixedSizedQueue<string> { Limit = 100 };</code>
登录后复制

添加项目会自动保持大小:

<code class="language-csharp">urlHistory.Enqueue("www.google.com");  // Enqueues the URL
urlHistory.Enqueue("www.microsoft.com"); // The oldest URL is automatically dequeued</code>
登录后复制

这种方法提供了一种更优雅、更高效的方式来管理 C# 中的固定大小队列。

以上是如何在 C# 中实现具有自动出队功能的固定大小队列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板