Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan Baris Bersaiz Tetap dengan Penyahgantian Automatik dalam C#?
Melaksanakan baris gilir saiz tetap dengan fungsi dequeue automatik dalam C#
Dalam pembangunan perisian, mengurus kapasiti storan terhad sambil mengekalkan maklumat yang diperlukan adalah penting. Apabila bekerja dengan baris gilir, anda sering menghadapi situasi ini: data baharu sentiasa ditambah dan data lama perlu dibuang apabila had kapasiti dicapai. Untuk menyelesaikan masalah ini, kami menyediakan penyelesaian menggunakan kelas System.Collections
dalam ruang nama ConcurrentQueue<T>
.
Melaksanakan baris gilir saiz tetap dengan fungsi dequeue
Untuk mencipta baris gilir bersaiz tetap dengan fungsi dequeue automatik, kami mentakrifkan kelas pembalut FixedSizedQueue<T>
, yang merangkum ConcurrentQueue<T>
:
<code class="language-csharp">public class FixedSizedQueue<T> { private readonly ConcurrentQueue<T> q = new ConcurrentQueue<T>(); private readonly object lockObject = new object(); public int Limit { get; set; } public void Enqueue(T obj) { q.Enqueue(obj); lock (lockObject) { T overflow; while (q.Count > Limit && q.TryDequeue(out overflow)) ; } } }</code>
Penjelasan
KelasFixedSizedQueue<T>
menyediakan satu kaedah Enqueue
untuk menambah elemen pada baris gilir. Secara dalaman, ia menyemak sama ada kiraan baris gilir melebihi Limit
yang ditentukan. Jika ya, gunakan pernyataan lock
untuk mengunci elemen baris gilir dan nyah gilir sehingga kiraan jatuh di bawah had.
Mekanisme ini memastikan bahawa hanya bilangan elemen yang diperlukan sentiasa disimpan dalam baris gilir. Elemen tertua dialih keluar secara automatik untuk menampung elemen yang lebih baharu.
Contoh Penggunaan
Untuk menggunakan kelas FixedSizedQueue<T>
, buat contoh dan tetapkan atribut Limit
kepada kapasiti tertinggi yang dikehendaki:
<code class="language-csharp">FixedSizedQueue<string> browserHistory = new FixedSizedQueue<string> { Limit = 100 };</code>
Selepas itu, cuma panggil kaedah Enqueue
untuk menambah elemen baharu pada sejarah:
<code class="language-csharp">browserHistory.Enqueue("www.google.com");</code>
Apabila anda menambah lebih banyak URL, URL tertua akan dibatalkan secara automatik, mengekalkan kapasiti yang diperlukan sebanyak 100 URL dalam sejarah.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Baris Bersaiz Tetap dengan Penyahgantian Automatik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!