建立具有自動出列功能的 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中文網其他相關文章!