Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Baris Bersaiz Tetap dengan Penyahgantian Automatik dalam C#?

Bagaimanakah Saya Boleh Melaksanakan Baris Bersaiz Tetap dengan Penyahgantian Automatik dalam C#?

Barbara Streisand
Barbara Streisandasal
2025-01-13 08:21:43489semak imbas

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

Mencipta Baris Bersaiz Tetap C# dengan Penyahgantian Automatik

Banyak aplikasi memerlukan struktur data yang menyimpan bilangan item tetap, mengalih keluar yang paling lama apabila ia penuh. Ini berguna untuk menjejaki peristiwa terbaharu atau mengekalkan sejarah. Bayangkan pelayar web perlu menyimpan 100 URL terakhir yang dilawati. Walaupun ConcurrentQueue<T> boleh berfungsi, mengurus penyahbarisan secara manual adalah tidak cekap. Kelas pembungkus tersuai menyediakan penyelesaian yang lebih bersih.

Kelas FixedSizedQueue<T>

Kelas ini membalut ConcurrentQueue<T>, mengendalikan kedua-dua enqueueing dan dequeueing untuk mengekalkan saiz yang ditetapkan. Takrif kelas termasuk:

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

Kaedah Enqueue

Kaedah Enqueue menambah item. Jika baris gilir melebihi had, ia akan mengalih keluar item lama:

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

Menggunakan FixedSizedQueue<T>

Untuk menggunakan kelas, buat contoh dan tetapkan had:

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

Menambah item secara automatik mengekalkan saiz:

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

Pendekatan ini menyediakan cara yang lebih elegan dan cekap untuk mengurus baris gilir bersaiz tetap dalam C#.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Baris Bersaiz Tetap dengan Penyahgantian Automatik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn