Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Baris Bersaiz Tetap dengan Penyahgantian Automatik dalam 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!