Heim > Backend-Entwicklung > C++ > Wie kann ich eine Warteschlange mit fester Größe und automatischer Entfernung aus der Warteschlange in C# implementieren?

Wie kann ich eine Warteschlange mit fester Größe und automatischer Entfernung aus der Warteschlange in C# implementieren?

Barbara Streisand
Freigeben: 2025-01-13 08:21:43
Original
489 Leute haben es durchsucht

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

Erstellen einer C#-Warteschlange mit fester Größe und automatischer Entfernung aus der Warteschlange

Viele Anwendungen benötigen eine Datenstruktur, die eine feste Anzahl von Elementen enthält und die ältesten entfernt, wenn sie voll sind. Dies ist nützlich, um aktuelle Ereignisse zu verfolgen oder einen Verlauf zu verwalten. Stellen Sie sich einen Webbrowser vor, der die letzten 100 besuchten URLs speichern muss. Während ConcurrentQueue<T> funktionieren könnte, ist die manuelle Verwaltung der Warteschlangenentfernung ineffizient. Eine benutzerdefinierte Wrapper-Klasse bietet eine sauberere Lösung.

Die FixedSizedQueue<T> Klasse

Diese Klasse umschließt ein ConcurrentQueue<T> und übernimmt sowohl das Einreihen als auch das Entfernen aus der Warteschlange, um eine festgelegte Größe beizubehalten. Die Klassendefinition umfasst:

<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>
Nach dem Login kopieren

Die EnqueueMethode

Die Methode Enqueue fügt Elemente hinzu. Wenn die Warteschlange das Limit überschreitet, werden ältere Elemente entfernt:

<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>
Nach dem Login kopieren

Verwenden von FixedSizedQueue<T>

Um die Klasse zu verwenden, erstellen Sie eine Instanz und legen Sie das Limit fest:

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

Beim Hinzufügen von Elementen wird die Größe automatisch beibehalten:

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

Dieser Ansatz bietet eine elegantere und effizientere Möglichkeit, Warteschlangen mit fester Größe in C# zu verwalten.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Warteschlange mit fester Größe und automatischer Entfernung aus der Warteschlange in C# implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage