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
Lepaskan: 2025-01-13 08:21:43
asal
493 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Menggunakan FixedSizedQueue<T>

Untuk menggunakan kelas, buat contoh dan tetapkan had:

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

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan